docker - Docker在使用内部网络时不会暴露端口
问题描述
当我在文件中配置内部网络docker-compose
时,通过该选项公开端口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
不能将容器端口代理到主机或者我错过了什么?
解决方案
推荐阅读
- kotlin - 通过 Exposed 中的查询为组中的多个列别名 count()
- java - Spring Boot Data JPA 任务:测试失败
- c# - C# Appium/Selenium Derive WindowsElement 在转换时抛出错误
- flutter - 扩展的小部件如何在颤振中工作?
- android - 开发密钥哈希和发布密钥哈希的区别
- python - For 循环与 For Item 循环的速度
- mysql - MySQL:从电话号码中删除国家代码的 SQL
- c# - 无法从一个 ViewModel 映射到另一个
- javascript - 动画无法正常工作
- python - 在scrapy中选择多个属性