Python 3.x 使用端口转发和网络=主机从一个docker连接到另一个docker失败 我在python3.7.5中编写了一个连接到RabbitMQ的应用程序: 使用Ubuntu作为docker机器
我正在与docker一起运行rabbitmq:Python 3.x 使用端口转发和网络=主机从一个docker连接到另一个docker失败 我在python3.7.5中编写了一个连接到RabbitMQ的应用程序: 使用Ubuntu作为docker机器,python-3.x,docker,rabbitmq,network-programming,pika,Python 3.x,Docker,Rabbitmq,Network Programming,Pika,我正在与docker一起运行rabbitmq: docker run--name rabbitmq-p 5671:5671-p 5672:5672-p 15672:15672--hostname rabbitmq rabbitmq:3.6.6-management 测试: 我的python应用程序通过127.0.01:5672连接到它 预期:连接和工作 实际:连接和工作 我将应用程序放在docker中,构建并运行 (此命令行是使用pycharm创建的) 当运行此代码(在docker内部
docker run--name rabbitmq-p 5671:5671-p 5672:5672-p 15672:15672--hostname rabbitmq rabbitmq:3.6.6-management
测试:
- 我的python应用程序通过127.0.01:5672连接到它
- 预期:连接和工作
- 实际:连接和工作
- [Errno 111]连接调用失败('127.0.0.1',5672)
- [Errno 99]无法分配请求的地址
ping,nslookup
检查网络连接。RabbitMQ容器
docker run --name rabbitmq \
-p 5671:5671 -p 5672:5672 -p 15672:15672 \
--hostname rabbitmq \
--network host \ # <-- Add this line, now both container see each other
rabbitmq:3.6.6-management
docker run \
-P \
--env ENVIRONMENT_NAME=local \
--name html-to-pdf \
-v /home/mickey/dev/core/components/pdf-svc/:/html-to-pdf \
--privileged \
--network host \
pdf-svc-image:latest bash
然后在代码中,您需要使用
host=rabbitmq
而不是127.0.0.1加载变量。我不建议为简单的容器到容器通信禁用Docker的网络。是的,我说过要添加遗忘网络。你在哪里看到你把它删除了?——网络主机说要禁用Docker的网络层。它可能会解决眼前的问题,但与以root用户身份运行进程解决权限问题的方式相同:它不会解决根本问题,可能会产生意外的副作用;它有一些很好的背景信息,说明事情通常是如何运作的。在Compose之外,您需要docker network创建一个网络,并在该网络上运行两个容器。尽可能避免主机联网。
docker run --name rabbitmq \
-p 5671:5671 -p 5672:5672 -p 15672:15672 \
--hostname rabbitmq \
--network host \ # <-- Add this line, now both container see each other
rabbitmq:3.6.6-management
docker run \
-P \
--env ENVIRONMENT_NAME=local \
--name html-to-pdf \
-v /home/mickey/dev/core/components/pdf-svc/:/html-to-pdf \
--privileged \
--network host \
pdf-svc-image:latest bash