[编辑 2016]
现在不推荐使用直接链接。做链接容器的新方法是docker network connect。它的工作方式与虚拟网络非常相似,并且比旧的链接方式具有更广泛的功能集。
首先,您创建命名容器:
docker run --name rabbitmq -d -p :5672 markellul/rabbitmq /usr/sbin/rabbitmq-server
docker run --name celery -it markellul/celery /bin/bash
然后你创建一个网络(最后一个参数是你的网络名称):
docker network create -d bridge --subnet 172.25.0.0/16 mynetwork
将容器连接到新创建的网络:
docker network connect mynetwork rabbitmq
docker network connect mynetwork celery
现在,两个容器都在同一个网络中,并且可以相互通信。
可以在使用网络:连接容器中找到非常详细的用户指南。
[老答案]
Docker 0.6.5 中有一个新特性叫做 linking ,旨在帮助 docker 容器之间的通信。
首先,像往常一样创建你的 rabbitmq 容器。请注意,我还使用了新的“名称”功能,这让生活变得更轻松了一点:
docker run --name rabbitmq -d -p :5672 markellul/rabbitmq /usr/sbin/rabbitmq-server
您可以使用链接参数来映射容器(我们在这里使用名称,id 也可以):
docker run --link rabbitmq:amq -i -t markellul/celery /bin/bash
现在你可以访问 rabbitmq 容器的 IP 和 Port,因为 docker 自动添加了一些环境变量:
$AMQ_PORT_5672_TCP_ADDR
$AMQ_PORT_5672_TCP_PORT
此外,Docker 将源容器的主机条目添加到/etc/hosts
文件中。在此示例amq
中,将是容器中定义的主机。
来自 Docker文档:
与 /etc/hosts 文件中的主机条目不同,如果源容器重新启动,存储在环境变量中的 IP 地址不会自动更新。我们建议使用 /etc/hosts 中的主机条目来解析链接容器的 IP 地址。