我有2个容器:PL和SL,它们都在同一主机上(我的PC-Windows)。 这两个容器都是从Linux映像创建的。
这些容器应相互连接:
在PL容器内部有一个配置文件(在“卷”中),并且在其中插入了字符串: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。我只想插入主机名。
有可能吗?
答案 0 :(得分:1)
我假设“应该彼此连接”是指,您可以从容器PL
中访问容器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
。您可以在容器内的任何配置中使用此URI(sl.my_network
)。 Docker DNS将为您解决该问题。