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
socat -d -d ~/Library/Containers/com.docker.docker/Data/debug-shell.sock pty,rawer
# 別ターミナルセッションで
screen /dev/ttys0xx
ttys0xx
の部分は socat
コマンドを実行した時に作成される ttys004
のような数字に置き換えて実行する必要があります。
もしくは、dockerコマンド経由でアクセスすることもできるようです。
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