Docker容器中的连接被拒绝通过公开端口进行通信

时间:2015-06-30 16:01:25

标签: apache docker

您好我需要连接三个泊坞容器,以便它们可以一起工作。我将这三个容器称为

  • 容器1 - pga(端口80处的apache webserver)
  • 容器2 - 服务器(端口8930处的apache airavata服务器)
  • 容器3 - 兔子(RabbitMQ at 5672号港口)

我已经将rabbitMQ作为(容器3)启动了

docker run -i -d --name rabbit -p 15672:15672 -t rabbitmq:3-management

我已经启动了服务器(容器2)

docker run -i -d --name server --link rabbit:rabbit --expose 8930 -t airavata_server /bin/bash

现在从服务器(容器2)内部,我可以在5672端口访问兔子(容器3)。当我尝试

nc -zv container_3_port 5672它表示连接成功。

直到这一点,我对通过链接的docker连接感到满意。 现在我创建了另一个容器pga(容器1)

docker run -i -d --name pga --link server:server -p 8080:80 -t psaha4/airavata_pga /bin/bash

现在,当我尝试访问服务器(容器2)的服务时,从新的pga容器内部说连接拒绝

我已经验证从服务器内容服务内部运行8930端口并且在创建容器时暴露但仍然拒绝与其链接的其他容器的连接。

我无法找到任何人描述的类似情况,也无法如何调试相同的情况。请帮我找一个方法。

命令输出: docker exec server lsof -i:8930

  

exec:" lsof":$ PATH中找不到可执行文件   无法在容器中运行exec命令fb207d2fe5b902419c31cb8466bcee4ba551b097c39a7405824c320fcc67f5e2:[8]系统错误:exec:" lsof":$ PATH中找不到可执行文件   在容器fb207d2fe5b902419c31cb8466bcee4ba551b097c39a7405824c320fcc67f5e2开始exec命令错误:不能在容器995b86032b0421c5199eb635bd65669b1aa93f96b60da4a49328050f7048197a运行exec命令fb207d2fe5b902419c31cb8466bcee4ba551b097c39a7405824c320fcc67f5e2:[8]系统错误:EXEC:" lsof的&#34 ;:可执行文件在$ PATH未发现

1 个答案:

答案 0 :(得分:2)

注意:打算扩大这个范围,但我的孩子刚病了。我有机会解决调试问题。

您可能会发现使用docker-compose更容易,因为它允许您使用一个命令运行它们并将配置保持在源代码管理下。示例配置文件(来自my website)如下所示:

database:
    build: database
    env_file:
        - database/.env
api:
    build: api
    command: /opt/server/dist/build/ILikeWhenItWorks/ILikeWhenItWorks
    env_file:
        - api/.env
    links:
        - database
    tty:
        false
    volumes:
        - /etc/ssl/certs/:/etc/ssl/certs/
        - api:/opt/server/
webserver:
    build: webserver
    ports:
        - "80:80"
        - "443:443"
    links:
        - api
    volumes_from:
        - api

我发现这些文件非常易读且易于理解,它们基本上都说明了他们正在做的事情。您可以在my source code中看到它与周围目录结构的关系。