限制互联网访问 – 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
类似。