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不幸的是,我还没有找到解决方案:-/