如何在docker中链接容器?

新手上路,请多包涵

这是我输入 docker ps 时的结果: 这是我输入 docker ps 时的图像

我有 3 个 docker 容器:webapps、redis 和 rabbitmq。我想将容器 webapps 链接到容器 redis 和 rabbitmq 容器。在非 docker 应用程序中,mywebapps 可以向 rabbitmq 发送消息并写入/读取 redis。

我尝试使用这样的命令

docker run --name rabbitmq -p 8080:80 --link webapps:nimmis/apache-php7 -d rabbitmq

但它不起作用。

这是我尝试通过rabbitmq发送消息的webapps上的config.php:

 define('HOST', 'localhost');
define('PORT', 5672);

我试图用主机名更改 localhost

 define('HOST', 'rabbitmq');
define('PORT', 5672);

错误消息说 connection refused

看来在我的三个容器中需要配置在同一个网络命名空间中。

原文由 Kukuh Tw 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 362
1 个回答

链接是一项遗留功能。请使用“用户定义的网络”:

 sudo docker network create mynetwork

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

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

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

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

同一“用户定义网络”上的 所有 容器都将具有网络连接性。不需要“遗留链接”。

原文由 Farhad Farahi 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题