如何阻止不同Docker网络上的容器之间的通信?

时间:2020-07-15 12:50:41

标签: docker docker-compose

我有一个与docker-compose一起运行的Docker设置。有两个网络,当前都与“网桥”驱动程序一起运行。如果知道IP,则docker网络A(又称frontend)上的容器当前可以直接与网络B(又称backend)上的容器通信,反之亦然。

A和B之间的所有此类通信能否被阻止?

是否可以通过在yml文件中进行适当的配置来实现?如果没有,那么什么docker命令或其他变通办法可以实现?

以下是我使用的docker-compose.yml文件的伪示例。我将网络B设置为internal: true,这确实似乎阻止了B上的容器到主机网络/互联网的出站连接。但是,如果我知道/猜测它们的IP,我仍然可以从B上的容器ping A上的容器。

version: '3.5'

services:
  proxy:
    image: nginx:alpine
    container_name: proxy1
    ports:
      - "80:8080/tcp"
      - "443:8443/tcp"
    networks:
     - frontend
     - backend

  webapp:
    image: lopush/webapp:latest
    container_name: webapp1
    networks:
     - backend

networks:
  frontend:
    driver: bridge
    internal: false
    name: webapp_frontend
    ipam:
      driver: default
      config:
        - subnet: 172.18.0.1/16

  backend:
    driver: bridge
    internal: true
    name: webapp_backend
    ipam:
      driver: default
      config:
        - subnet: 172.19.0.1/16

实际设置中还有更多连接到backend的容器,并且它们使用nginx服务器作为Internet的代理,但我认为这里的细节并不重要。

0 个答案:

没有答案