首页 > 解决方案 > docker 容器如何暴露服务?

问题描述

我正在通过命令部署一堆服务: docker stack deploy -c <docker-compose.yml> <stack-name>

我正在 docker compose 上映射其中一项服务的端口ports: 8000:8000

正在使用的网络驱动程序是覆盖。我可以通过 localhost:8000和 Peers IP(?) 访问这些服务。

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

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

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

如果是这样,我如何获得主机IP?当我做 docker-machine IP 我得到“主机没有运行”。

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

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

谢谢

标签: docker

解决方案


在同一个集群上的容器之间进行通信的最佳方式是什么?通过名称发现?

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

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


推荐阅读