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/