2015-06-30 2 views
1

Привет, У меня есть требование подключить три контейнера докеров, чтобы они могли работать вместе. Я называю эти три контейнера, какСоединение отказано в контейнерах Докера, сообщающихся через открытые порты

  • контейнер 1 - ПГА (Apache веб-сервер на порт 80)
  • контейнера 2 - сервер (Apache Айравата сервер на порту 8930)
  • контейнера 3 - кролика (RabbitMQ в порту 5672)

Я начал RabbitMQ как (контейнер 3)

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

Я начал сервер (со ntainer 2), как

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

Теперь от внутреннего сервера (контейнер 2) Я могу получить доступ кролика (контейнер 3) в порту 5672. Когда я пытаюсь

nc -zv container_3_port 5672 это говорит соединение успешно.

До этого момента я доволен подключением докеров по ссылке. Теперь я создал еще один контейнер ПГК (контейнер 1) в качестве

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

Теперь внутри нового ПГК контейнера, когда я пытаюсь получить доступ к службе сервера (контейнера 2) его говоря связь отказаться.

Я проверил, что изнутри службы контейнерного контейнера работает на порту 8930, и он был открыт при создании контейнера, но все же отказался от подключения из других контейнеров, к которым он связан.

Я не мог найти подобную ситуацию, описанную кем угодно, и также не знаю, как отлаживать ее. Пожалуйста, помогите мне найти способ.

Выход команды: докер Exec сервер Lsof -i: 8930

exec: "lsof": executable file not found in $PATH Cannot run exec command fb207d2fe5b902419c31cb8466bcee4ba551b097c39a7405824c320fcc67f5e2 in container 995b86032b0421c5199eb635bd65669b1aa93f96b60da4a49328050f7048197a: [8] System error: exec: "lsof": executable file not found in $PATH Error starting exec command in container fb207d2fe5b902419c31cb8466bcee4ba551b097c39a7405824c320fcc67f5e2: Cannot run exec command fb207d2fe5b902419c31cb8466bcee4ba551b097c39a7405824c320fcc67f5e2 in container 995b86032b0421c5199eb635bd65669b1aa93f96b60da4a49328050f7048197a: [8] System error: exec: "lsof": executable file not found in $PATH

+0

Вы можете отредактировать свой вопрос с помощью вывода 'docker exec server lsof -i: 8930'? – Thomasleveil

ответ

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.

Смежные вопросы