docker 容器之间如何通信?

Linking 是一项遗留功能。请使用“用户自定义网络”:

sudo docker network create mynetwork

然后使用此网络重新运行您的容器:

sudo docker run --name rabbitmq -p 8080:80 -d --network mynetwork rabbitmq

对您希望彼此连接的其他容器执行相同的操作。

使用“用户自定义网络”,您可以随意使用“内部名称解析”(有点像访问网站时的域名解析)。您可以使用要引用的容器的名称来解析容器的 IP 地址,只要它们在同一“用户自定义网络”上运行即可。rabbitmq有了这个,您可以在同一网络上的其他容器中用容器的名称解析容器的 IP 地址。

同一“用户定义网络”上的所有容器都将具有网络连接。不需要"legacy linking"。


如果要在容器已经运行后将容器添加到网络,请使用如下命令

docker network connect [OPTIONS] NETWORK CONTAINER

这很简单。如果您有两个或更多正在运行的容器,请完成后续步骤:

docker network create myNetwork
docker network connect myNetwork web1
docker network connect myNetwork web2

现在您从 web1 连接到 web2 容器或相反。

使用您可以通过运行如下命令找到的内部网络 IP 地址:

docker network inspect myNetwork

请注意,通过网桥连接的容器只能访问内部 IP 地址和端口。

因此,例如假设 web1 容器启动于:

docker run -p 80:8888 web1

意味着在容器内部,服务运行在端口 8888 上。并且通过 inspect 显示 web1 的 IP 是 172.0.0.2。

就可以这样从myNetwork从 web2 连接到 web1 啦。

curl 172.0.0.2:8888
curl web1:8888

https://stackoverflow.com/questions/41768157/how-to-link-containers-in-docker

https://stackoverflow.com/questions/42385977/accessing-a-docker-container-from-another-container

https://docs.docker.com/engine/reference/commandline/network_create/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值