我在Arch Linux的新安装中有这两个简单的容器(也用Alpine进行了相同的测试):
[*] Alpine1**:
version: "3"
services:
app1:
image: alpine:latest
container_name: alpine1
restart: unless-stopped
command: sleep infinity
ports:
- "8001:8001"
networks:
dnet:
networks:
dnet:
driver: bridge
字符串
[*] Alpine2**:
version: "3"
services:
app1:
image: alpine:latest
container_name: alpine2
restart: unless-stopped
command: sleep infinity
ports:
- "8002:8002"
networks:
dnet:
networks:
dnet:
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
我错过了什么?我希望这两个容器之间不可能进行通信,因为它们连接到不同的网络(如这里所指定的)。
我尝试使用默认桥,行为完全相同,所以默认桥和用户定义桥之间似乎没有区别。
1条答案
按热度按时间pxy2qtax1#
地址
172.18.0.1
是您的主机**的地址(具体来说,是与alpine1
Docker网络关联的虚拟网桥设备的地址),并且您已经显式地将容器端口8001发布为主机端口8001。如果不希望
alpine2
中的容器访问alpine1
中的服务,请不要在主机上发布这些服务的端口。端口发布通常意味着“我希望此服务可以从任何地方访问”。