如何将我的Docker网络设置为仅允许内部和主机访问?
我一直在使用用户定义的网络来阻止我的容器访问互联网。
networks:
no-internet:
internal: true
ipam:
config:
- subnet: 172.19.0.0/16
这很好用。但是,我希望允许我的容器连接到主机,这样我就可以使用XDebug。如果我使用默认的Docker网络,我可以设置Xdebug通过host.docker.internal
连接到主机。将容器添加到no-internet
用户定义的网络后,容器将失去对主机的访问权限。
发布于 2021-10-12 19:56:31
我不知道XDebug是什么,所以我可能完全错了;但我的直觉是这是一个简单的例子。
将Xdebug放在no-internet
网络上的容器中。
发布于 2021-10-12 19:59:41
在创建用户定义的网络时,请设置com.docker.network.bridge.enable_ip_masquerade=false
,而不是设置internal
。这将防止NAT伪装来自特定网络的出站流量(这是Docker在使用IPv4时将容器连接到主机网络的方式)。
下面是如何使用docker-cli来做这件事。
docker network create --subnet 172.19.0.0/16 \
-o com.docker.network.bridge.enable_ip_masquerade=false \
-o com.docker.network.bridge.name=nointernet \
nointernet
这是它在Docker Compose中的样子
networks:
front:
driver: bridge
driver_opts:
com.docker.network.bridge.enable_ip_masquerade: 'false'
ipam:
driver: default
config:
- subnet: 172.19.0.0/16
https://stackoverflow.com/questions/69544970
复制相似问题