限制互联网访问 – Docker容器

我有一种情况是限制负载均衡器networking中的容器的Internet访问。 例如在下面的图片中

方便您参考

只有container4连接到互联网; 其他三个只通过集装箱与外界沟通。 例如,如果container1需要smtp支持,它会将smtp请求转发到container4以获取访问权限。

容器4以外的容器不应该被允许直接访问互联网! 这应该在Docker级别上执行。

我相信这将在dockernetworking创build可configuration,任何人可以解释如何实现这一目标?

networking创build访问互联网

dockernetworking创build–subnet = 172.19.0.0 / 16互联网

创build块互联网接入的networking

dockernetworking创build – 内部 – 子网10.1.1.0/24没有互联网

如果你想连接docker集装箱到互联网

docker network connect internet container-name 

如果你想阻止互联网访问

 docker network connect no-internet container-name 

注意

在内部networking我们不能把端口连接到外面的世界,请参考这个问题了解更多细节

你有没有听说过Docker Compose? 这是一个pipe理多个容器的简单方法,并且有很好的networking支持:

https://docs.docker.com/compose/overview/

https://docs.docker.com/compose/networking/

在你的案例中示例docker-compose.yml (未经testing):

 version: '2' services: container1: image: ... container_name: container1 networks: - container1 container2: image: ... container_name: container2 networks: - container2 container3: image: ... container_name: container3 networks: - container3 container4: image: ... container_name: container4 ports: - "80:80" networks: - container1 - container2 - container3 networks: container1: container2: container3: 

这样容器的主机名将与定义的container_name类似。