Docker --add-host和Docker组成

时间:2018-10-14 13:48:27

标签: docker docker-compose dockerfile

我有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。我只想插入主机名。

有可能吗?

1 个答案:

答案 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

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