首页 > 解决方案 > 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。我只想插入主机名。

可能吗?

标签: dockerdocker-composedockerfile

解决方案


我假设“应该相互连接”意味着您可以从 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的. 尝试例如:PLsl.my_network

docker exec -it pl bash                         # with this command you enter container pl
ping sl.my_network

这假设您的容器已安装bashping已安装。sl.my_network您可以在容器内的任何配置中使用此 URI ( )。Docker DNS 将为您解析。


推荐阅读