docker - 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 中进行主机和虚拟机之间的端口映射。现在可以了!]
在同一个集群上的容器之间进行通信的最佳方式是什么?
谢谢
解决方案
在同一个集群上的容器之间进行通信的最佳方式是什么?通过名称发现?
通常,如果您在容器之间进行通信,您应该使用容器/服务名称。
对于您的其他问题,您可能不需要像 nginx 或 traefik 这样的反向代理。
推荐阅读
- gcloud - 如何根据目录更改 gcloud auth
- amazon-dynamodb - 如何使用 cloudformation 在 dynamodb 中添加列
- telemetry - OpenTelemetry(Java)中父子跨度的相同跨度ID
- java - 基于Java中的某些约束打印字符串(字符串和数组)(压缩解压缩)
- jbpm - 无法将默认业务应用程序 kjar 项目导入业务中心
- django - Django,不断重定向到错误的页面
- android - 如何在 android 10 中获取唯一的设备 ID?
- iis - 从 IIS 获取当前正在处理的请求的详细信息
- postgresql - NPgsql 是否支持 OLEDB 与 PostgreSQL 服务器的连接?
- php - 数据库错误 mysqli::real_connect(): (HY000/2002): Connection refused codeingiter