Python 3.x 使用端口转发和网络=主机从一个docker连接到另一个docker失败 我在python3.7.5中编写了一个连接到RabbitMQ的应用程序: 使用Ubuntu作为docker机器

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一起运行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内部)时,我得到一个异常
  • [Errno 111]连接调用失败('127.0.0.1',5672)
  • [Errno 99]无法分配请求的地址
帮助?

根据

注意:如果容器在使用主机模式网络时没有自己的IP地址,则端口映射不会生效,并且会忽略-p、-publish、-p和--publish all选项,从而生成警告:

我不确定这是你的情况。您将登录容器,并运行
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