Docker在使用内部网络时不会公开端口
在我的Docker在使用内部网络时不会公开端口,docker,docker-compose,docker-networking,Docker,Docker Compose,Docker Networking,在我的docker compose文件中配置时,通过该选项公开端口将不再有效 让我们考虑下面的 DOCK撰写.YML文件: version: '3' services: registry: image: registry:2 ports: - "127.0.0.1:5000:5000" networks: - internal networks: internal: internal: true 当我使用internal:fa
docker compose
文件中配置时,通过该选项公开端口将不再有效
让我们考虑下面的<代码> DOCK撰写.YML<代码>文件:
version: '3'
services:
registry:
image: registry:2
ports:
- "127.0.0.1:5000:5000"
networks:
- internal
networks:
internal:
internal: true
当我使用internal:false
运行它时,一切正常,端口5000将映射到主机。当我使用internal:true
选项运行它时,不再是端口映射:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
de6412f692e7 registry:2 "/entrypoint.sh /etc…" 10 minutes ago Up 10 minutes registry_registry_1
但是,我仍然可以从主机通过内部网络访问端口:
$ docker-compose exec registry ip addr
[...]
inet 172.23.0.2/16 [...]
$ curl -v 172.23.0.2:5000
[...]
> GET / HTTP/1.1
[...]
< HTTP/1.1 200 OK
[...]
$docker compose exec注册表ip地址
[...]
inet 172.23.0.2/16[…]
$curl-v 172.23.0.2:5000
[...]
>GET/HTTP/1.1
[...]
因此,
docker proxy
无法将容器端口代理给主机,或者我遗漏了什么,应该没有任何技术原因吧?我阅读了内部
文档,认为该网络上的容器在任何方向都无法与主机或外部通信。您希望从internal:true
中获得什么效果?容器确实无法与外部通信,但由于docker主机在内部网络中获得IP,它仍然可以与主机通信。curl
命令显示了这一点。@sven.to您找到过解决方案吗?@vab2048不幸的是,我还没有找到解决方案:-/我阅读了内部
文档,这意味着该网络上的容器在任何方向都无法与主机或外部通信。您希望从internal:true
中获得什么效果?容器确实无法与外部通信,但由于docker主机在内部网络中获得IP,它仍然可以与主机通信。curl
命令显示了这一点。@sven.to您找到过解决方案吗?@vab2048不幸的是,我还没有找到解决方案:-/