[英]Disallow egress from Docker containers on Docker for Mac
我想禁用所有由Docker容器启动的与外界的连接。 我可以在Linux中通过向Linux中的FORWARD链添加规则来做到这一点。 如何在Mac版Docker中做到这一点?
我发现Docker for Mac使用xhyve vm,这就是docker0接口所在的地方。 该主机连接到主机的什么接口? 我在Mac上使用了nettop,然后看到Docker使用了我的en0无线接口。 但是,我不确定Docker和xhyve是否使用相同的接口。
编辑:添加了docker-for-windows标签,因为它们可能具有类似的解决方案(希望)
编辑2:Mac的Docker已更改,因此可接受的解决方案有所更改
尝试使用Mac的pfctl
命令,它等效于iptables。
这是手册页: https : //developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man8/pfctl.8.html
$ docker run --net=host --privileged -ti alpine sh
# apk update && apk add iptables
# iptables -vnL
这和规则也可以变成一个Dockerfile
并与运行-- restart
选项。 我认为当Mac的Docker启动时,出现on-failure
可能会重新应用规则。
要进入linux VM:
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
移至runc
docker-ce
(或docker
)命名空间
linuxkit:~# runc --root /run/containerd/runc/default exec -t docker-ce /bin/sh
docker-ce # iptables -vnL
请注意,重新启动Mac版Docker后,规则将消失。 我还没有发现持久的系统更改的秘诀。
使用ctrl - a然后按d退出屏幕会话,否则将使终端变色。
对于简单但€€的选项,请使用Little Snitch并com.docker.supervisor via vpnkit
从com.docker.supervisor via vpnkit
阻止OSX上的出站连接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.