Docker在使用内部网络时不会公开端口

时间:2019-05-08 13:49:23

标签: docker docker-compose docker-networking

当我在docker-compose文件中配置internal network时,通过ports选项公开的端口将不再起作用。

让我们考虑以下docker-compose.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-proxy无法将容器端口代理到主机还是没有什么技术上的原因?

0 个答案:

没有答案