这是我输入 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 许可协议
链接是一项遗留功能。请使用“用户定义的网络”:
然后使用此网络重新运行您的容器:
对您希望彼此连接的其他容器执行相同操作。
使用“用户定义的网络”,您可以使用“内部名称解析”(有点像访问网站时的域名解析)。您可以使用要引用的容器的名称来解析容器的 IP 地址,只要它们在相同的“用户定义的网络”上运行。有了这个,您可以在同一网络上的其他容器中解析
rabbitmq
容器的 IP 地址及其名称。同一“用户定义网络”上的 所有 容器都将具有网络连接性。不需要“遗留链接”。