docker 不同网络中的对接器使用其网关IP进行通信

ws51t4hk  于 2024-01-06  发布在  Docker
关注(0)|答案(1)|浏览(168)

我在Arch Linux的新安装中有这两个简单的容器(也用Alpine进行了相同的测试):
[*] Alpine1**:

  1. version: "3"
  2. services:
  3. app1:
  4. image: alpine:latest
  5. container_name: alpine1
  6. restart: unless-stopped
  7. command: sleep infinity
  8. ports:
  9. - "8001:8001"
  10. networks:
  11. dnet:
  12. networks:
  13. dnet:
  14. driver: bridge

字符串
[*] Alpine2**:

  1. version: "3"
  2. services:
  3. app1:
  4. image: alpine:latest
  5. container_name: alpine2
  6. restart: unless-stopped
  7. command: sleep infinity
  8. ports:
  9. - "8002:8002"
  10. networks:
  11. dnet:
  12. networks:
  13. dnet:
  14. driver: bridge


[*] Alpine1_dnet**:

  • IP地址:172.18.0.2/16
  • 网关:172.18.0.1

它们应该是相互隔离的,但是如果我执行:
第一个月
返回open
当它挂起,如果我使用alpine1 IP地址:docker exec alpine2 nc -vz 172.18.0.2 8001
我错过了什么?我希望这两个容器之间不可能进行通信,因为它们连接到不同的网络(如这里所指定的)。
我尝试使用默认桥,行为完全相同,所以默认桥和用户定义桥之间似乎没有区别。

pxy2qtax

pxy2qtax1#

地址172.18.0.1是您的主机**的地址(具体来说,是与alpine1 Docker网络关联的虚拟网桥设备的地址),并且您已经显式地将容器端口8001发布为主机端口8001。
如果不希望alpine2中的容器访问alpine1中的服务,请不要在主机上发布这些服务的端口。端口发布通常意味着“我希望此服务可以从任何地方访问”。

相关问题