docker - docker 容器如何公开服务?

标签 docker

我正在通过以下命令部署服务堆栈:docker stack deploy -c <docker-compose.yml> <stack-name>
而且我正在docker上映射这些服务之一的端口,并由ports: 8000:8000组成。

使用的网络驱动程序是叠加层。
我可以通过ocalhost:8000,对等IP(?)访问这些服务。

检查创建的网络时,可以看到每个容器的本地IP(例如10.0.1.2)。但是容器的外部IP在哪里(像172.0。...这样的容器)呢?

我在虚拟机ubuntu上运行这些docker容器。

如何从在其他网络上运行的其他节点访问在容器上运行的服务?无法通过hostIP:port访问?

如果是这样,我如何获得主机IP?当我执行docker-machine IP时,出现“主机未运行”。

[编辑:我没有在virtualbox中的主机和VM之间进行端口映射。现在可以了!]

在同一群内的容器之间进行通信的最佳方式是什么?

谢谢

最佳答案

Whats the best way to communicate between containers on the same swarm? Through name discovery?



通常,如果您在容器之间进行通信,则应使用容器/服务名称。

对于您的其他问题,您可能不需要像nginx或traefik这样的反向代理。

关于docker - docker 容器如何公开服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56297353/

相关文章:

maven - 在windows中使用docker设置redis配置

docker - 如何在不使用 VPN 镜像的情况下连接到 docker 中的 VPN?

azure - Azure 容器服务是否支持 Swarm 模式?

mysql - 无法在 Windows 中执行 mysql 命令并在 mysql docker 中使用 $MYSQL_ROOT_PASSWORD

bash - Docker无法识别用作参数的bash变量

mysql - 无法访问 docker 上的 wordpress 站点

ruby-on-rails - 在生产部署中将容器链接在一起

docker - 无法使用 docker plugin push 命令推送插件

docker - 内部 Tomcat REST 从 Docker 容器内部调用本地主机

java - 运行 docker 镜像时无法到达端点