gpt4 book ai didi

docker - 在两个Docker容器之间进行通信

转载 作者:行者123 更新时间:2023-12-02 19:35:03 27 4
gpt4 key购买 nike

我是Docker的新手,我需要您提供有关容器之间通信的帮助。

我有两个容器
容器1:这是一个网站,在端口80上运行
容器2:它是上述网站的Web API,运行在端口8000上

我在Raspberry Pi中安装了两个容器。我的RPi主机名是raspberrypi
我使用--net = host创建了两个容器,因此在我的网站中,我可以通过http://raspberrypi:8000/dosomething来调用我的网站

但是RPi的主机名可以更改,并且我无法使用新的API URL(例如:http // new_host_name:8000 / dosomething)重新创建网站容器,所以我的问题是

有什么方法可以将主机名分配给容器,以便可以在其他容器中使用它?
例如:
容器2使用“my_service”作为其主机名,因此在容器1中,我可以使用“http // my_service:8000 / dosomething”。我的客户可以更改其RPI的主机名,而无需更新代码。

谢谢,祝你有美好的一天。

最佳答案

假设您使用以下命令运行第一个容器:

docker run -d --name my_service web_api_image

因此您可以使用 --link标志运行第二个:
docker run -d -P --name web --link my_service:my_service website_image

然后,在网站容器中,您可以使用my_service主机名引用Web api。

请注意: --linkdeprecated

您还可以使用 docker-compose:
version: "2"
services:
web_api:
image: web_api_image
container_name: web_api
ports:
- "8000:8000"
expose:
- "8000"
website:
image: website_image
container_name: website
ports:
- "80:80"
links:
- "web_api:web_api"

替换图像名称并使用 docker-compose up运行

关于docker - 在两个Docker容器之间进行通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46388487/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com