繁体   English   中英

禁止从Mac版Docker上的Docker容器中退出

[英]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退出屏幕会话,否则将使终端变色。

OSX

对于简单但€€的选项,请使用Little Snitchcom.docker.supervisor via vpnkitcom.docker.supervisor via vpnkit阻止OSX上的出站连接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM