Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker--添加主机和Docker组合_Docker_Docker Compose_Dockerfile - Fatal编程技术网

Docker--添加主机和Docker组合

Docker--添加主机和Docker组合,docker,docker-compose,dockerfile,Docker,Docker Compose,Dockerfile,我有两个容器: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

我有两个容器: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, 我怎样才能用docker compose完成它? 我想从图像创建一个容器,每次都不插入我的IP。我只想插入主机名


有可能吗?

我假设应该通过相互连接的方式,您可以从容器SL访问容器PL中绑定到端口的应用程序,反之亦然

您可以通过docker compose实现这一点。这是一个最小的docker-compose.yml

然后,您应该能够使用简单的SL.my_网络从容器PL访问容器SL。例如:

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

这假设您的容器安装了bash和ping。您可以在容器内的任何配置中使用此URI sl.my_网络。Docker DNS将为您解决此问题。

您好,感谢您的回复!你的意思是我应该在我的网络字段中插入我的主机名吗?那么PL的属性文件中显示的表示sl服务器的字符串sl url呢?我需要把它放在docker文件里?谢谢,RonHi,我的回答告诉您如何从另一个容器pl到达一个容器sl,因为您说过这些容器应该相互连接:。如果这就是您想要做的,您不需要更改任何内容,但我怀疑,-add host=sl url:的想法是通过网络从完全不同的计算机(例如internet)访问您的容器。你可以澄清一下,你到底想做什么吗?10倍,我会澄清。我有一个PL容器,其中包含Tomcat+war文件。在这个容器中,我有一个属性文件-sl.properties。在这个文件中,我有一些关于PL服务的配置。此文件还包含:services.url=-此属性连接两个容器:PL和SL。此service.url实际上是SL url。这就是我添加到主机的原因:-添加主机=sl url:。我在sl.properties文件中插入了字符串sl url,但我可以在那里插入我的_host_IP_地址,这是同一件事,这就是为什么我使用主机文件BTW,PL和sl在我的机器上的同一docker主机上。你有什么建议?再次感谢!:如果使用我发布的docker-compose.yml,两个容器将位于同一docker网络my_网络请随意更改名称,但要始终如一,也就是说,在所有地方,你的配置文件都会简单地读取services.url=sl.my_network:8085/core_sl_env4。配置文件不需要知道你的主机,为什么要问这么多板上的问题?你是什么意思?
docker exec -it pl bash                         # with this command you enter container pl
ping sl.my_network