0

如何设置我的 Docker 网络以仅允许内部和主机访问?

我一直在使用用户定义的网络来阻止我的容器访问互联网。

networks:
  no-internet:
    internal: true
    ipam:
      config:
        - subnet: 172.19.0.0/16

这很好用。但是,我想允许我的容器连接到主机,以便我可以使用 XDebug。如果我使用默认的 Docker 网络,我可以设置 Xdebug 以通过host.docker.internal. 一旦我将容器添加到no-internet用户定义的网络,容器就会失去对主机的访问权限。

内部+主机

4

2 回答 2

0

internal在创建用户定义的网络时,不要设置,而是设置com.docker.network.bridge.enable_ip_masquerade=false。这将防止 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
于 2021-10-12T19:59:40.933 回答
0

我不知道 XDebug 是什么,所以我可能完全错了;但我的直觉是,这是一个简单的案例。

将 Xdebug 放在no-internet网络上的容器中。

于 2021-10-12T19:56:31.010 回答