docker - Docker --add-host 和 Docker 组合
问题描述
我有 2 个容器:PL 和 SL,它们都在同一主机上(我的电脑 - Windows)。这两个容器都是从 Linux 映像创建的。
这些容器应该相互连接:
在 PL 容器内有一个配置文件(在“volume”中),我在其中插入了字符串:sl_url
.
这就是我创建 PL 容器的方式:
docker run -d -p 8084:8080 -p 8008:8009 -v C:\temp\conf:/opt/tomcat/conf --add-host="sl-url:<my_host_IP_address>" --platform=linux <pl_image_name>
如您所见,sl-url
被翻译成我的ip。但这不是一个好的解决方案——因为我的 ip 可能会改变。
所以我听说了 docker compose ( https://docs.docker.com/compose/networking/ ),我怎么能用 docker compose 来做呢?我想从图像创建一个容器,而不是每次都插入我的 IP。我只想插入主机名。
可能吗?
解决方案
我假设“应该相互连接”意味着您可以从 container 访问PL
绑定到端口的container 中的应用程序,SL
反之亦然。
您可以使用 docker compose 来实现。这是一个最小的docker-compose.yml
version: "3.5"
services:
SL:
image: SL # or whatever the full image name is
container_name: sl
networks:
- my_network
PL:
image: PL # or whatever the full image name is
container_name: sl
networks:
- my_network
networks:
my_network:
name: my_network
driver: bridge
然后,您应该能够使用简单SL
的. 尝试例如:PL
sl.my_network
docker exec -it pl bash # with this command you enter container pl
ping sl.my_network
这假设您的容器已安装bash
并ping
已安装。sl.my_network
您可以在容器内的任何配置中使用此 URI ( )。Docker DNS 将为您解析。
推荐阅读
- javascript - Three.js 中使用 React 类的文件分离
- powerbi - 及时统计发生次数
- spring - Spring MVC:记录所有请求,即使资源未找到
- jasmine - 如何在 Angular Jasmine 中测试函数?
- azure - 在 Azure 上的免费层上部署 Java 应用程序时出错
- swift - 枚举具有关联值的枚举 - Swift
- gradle - 什么是 Gradle 依赖配置?
- ios - 谷歌地图正在快速显示带有标记的普通页面
- android - 无法取消在 kotlin 中定义的警报
- javascript - 使用 js 或 jquery 更改 inputfile 的图像值