小编sve*_*.to的帖子

Docker在使用内部网络时不会暴露端口

当我在文件中配置内部网络docker-compose时,通过该ports选项公开端口将不再起作用。

\n\n

让我们考虑以下docker-compose.yml文件:

\n\n
version: \'3\'\nservices:\n  registry:\n    image: registry:2\n    ports:\n      - "127.0.0.1:5000:5000"\n    networks: \n      - internal\nnetworks: \n  internal:\n    internal: true\n
Run Code Online (Sandbox Code Playgroud)\n\n

当我用 运行它时internal: false,一切都很好,端口 5000 将映射到主机。当我使用该internal: true选项运行它时,不再有端口映射:

\n\n
$ docker ps\nCONTAINER ID        IMAGE                                   COMMAND                  CREATED             STATUS              PORTS               NAMES\nde6412f692e7        registry:2                              "/entrypoint.sh /etc\xe2\x80\xa6"   10 minutes ago      Up 10 minutes                           registry_registry_1\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是,我仍然可以从主机通过内部网络到达该端口:

\n\n
$ docker-compose exec registry ip addr\n[...]\n    inet 172.23.0.2/16 [...]\n$ curl -v 172.23.0.2:5000\n[...]\n> GET / HTTP/1.1\n[...]\n< HTTP/1.1 200 OK\n[...]\n …
Run Code Online (Sandbox Code Playgroud)

docker docker-compose docker-network

8
推荐指数
0
解决办法
1682
查看次数

标签 统计

docker ×1

docker-compose ×1

docker-network ×1