首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >docker-构建网络和发布端口

docker-构建网络和发布端口
EN

Stack Overflow用户
提问于 2019-12-07 16:09:36
回答 1查看 308关注 0票数 0

我正在努力更好地理解对接者网络,但我对以下内容感到困惑:

我通过docker-compose (client,api)将2包含旋转。当我这样做,一个新的网络,myapp_default,和每个容器加入这个网络。网络是一个桥接网络,在172.18.0.1。客户端在172.18.0.2,api在172.18.0.3

我现在可以在172.18.0.2:8080访问客户机,在172.18.0.3:3000访问api --这是完全合理的。当我在客户端上发布端口: 8080:8080,在api上发布3000:3000端口时,我感到困惑。

现在我可以从以下位置访问这些容器:

  • 客户端在172.18.0.1:8080172.18.0.2:8080,和docker0网络上的172.17.0.1:8080
  • 172.18.0.1:3000172.18.0.3:8080172.17.0.1:3000的docker0网络上的API

1)当我发布端口时,为什么我可以通过docker0网络访问客户机和api?

2)为什么我可以通过172.17.0.1172.18.0.1连接到容器?

EN

回答 1

Stack Overflow用户

发布于 2019-12-08 12:26:15

您只能访问容器私有IP地址,因为您与Docker守护进程位于同一个本地Linux主机上。这在任何其他环境(不同的主机、MacOS或Windows主机,以及Docker之类的环境中,Docker都在VM中)不起作用,甚至使用docker inspect查找这些IP地址也不是最佳实践。

当您发布端口时,它们可以在这些端口的主机上访问。这在每个环境中都有效(在Docker中,“主机”是VM),也是从Docker外部空间访问容器的推荐方法。除非绑定到特定地址,否则容器可以在每个主机接口和每个主机IP地址上访问;这包括使用Docker桥网络创建的人工172.17.0.1等。

发布端口是在其他与网络相关的安装Docker的基础上进行的;它不会阻止您通过其他路径到达容器。

如果还没有,还应该在Docker文档中阅读网络写作。无论是否发布端口,都可以使用docker-compose.yml文件中的名称(如clientapi )作为主机名,连接实际服务器进程侦听的(未映射的)端口。在此功能与发布端口的功能之间,您实际上并不需要直接了解容器私有IP地址。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59227870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档