码头工人
$ docker run --net=host --privileged -ti alpine sh
# apk update && apk add iptables
# iptables -vnL
这和规则可以变成Dockerfile 并使用-- restart 选项运行。我认为on-failure 可能会在 Docker for Mac 启动时重新应用规则。
虚拟机
要访问 linux 虚拟机:
mac$ brew install screen
mac$ screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty
自从搬到linuxkit 之后,这不是一般的 linux 主机,一切都是容器:
linuxkit:~# ctr -n services.linuxkit tasks ls
TASK PID STATUS
acpid 925 RUNNING
diagnose 967 RUNNING
host-timesync-daemon 1116 RUNNING
ntpd 1248 RUNNING
vpnkit-forwarder 1350 RUNNING
docker-ce 1011 RUNNING
kubelet 1198 RUNNING
trim-after-delete 1303 RUNNING
vsudd 1398 RUNNING
使用runc 移动到docker-ce(或docker)命名空间
linuxkit:~# runc --root /run/containerd/runc/default exec -t docker-ce /bin/sh
docker-ce # iptables -vnL
请注意,重新启动 Docker for Mac 后,规则将消失。我还没有找到持久系统更改的秘诀。
使用 ctrl-a 然后 d 退出屏幕会话,否则您会破坏终端。
OSX
对于简单但简单的选项,请使用 Little Snitch 并阻止来自 com.docker.supervisor via vpnkit 的 OSX 上的出站连接。