12
Help us understand the problem. What are the problem?

posted at

updated at

Organization

Docker Desktop for Macの裏で動いている仮想マシン(Linux)に直接アクセスする方法

Docker Desktop for Macは裏で仮想マシン(Linux)が動いており、そのLinux上のDockerと通信してあたかもMac上で動作しているかのように見せています。

その裏で動いている仮想マシン(Linux)に直接アクセスする方法を示します。

新しい接続方法 (2021.4.8 追記)

Docker Desktop for Mac の新しいバージョンではttyファイルが無くなったため、 以前の方法 では接続ができなくなりました。
新しいバージョンでは debug-shell.sock 経由でアクセスする必要があるとのことです。

参考: https://gist.github.com/BretFisher/5e1a0c7bcca4c735e716abf62afad389

新しい接続方法その1
socat -d -d ~/Library/Containers/com.docker.docker/Data/debug-shell.sock pty,rawer
# 別ターミナルセッションで
screen /dev/ttys0xx

ttys0xx の部分は socat コマンドを実行した時に作成される ttys004 のような数字に置き換えて実行する必要があります。

もしくは、dockerコマンド経由でアクセスすることもできるようです。

新しい接続方法その2
docker run -it --rm --privileged --pid=host alpine:edge nsenter -t 1 -m -u -n -i sh

こちらのほうが手軽でよいかもしれません。

以前の方法

ターミナルを起動して以下のコマンドを実行すると、Docker (Desktop) for Macで稼働している仮想マシンにログインできます。

screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty

screen を終了する時は C-a k (controlキーを押しながらaを押下し、controlキーを放してkを押下) した後 y を押下します。

参考: https://forums.docker.com/t/connect-directly-to-container/18828/3

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
12
Help us understand the problem. What are the problem?