2016-06-12 6 views
1

мне нужен лучше уточненными решений следующих задач:Docker Контейнер для маршрутизации узла

Проблемы: я должен вручную создать iptable правила для того, чтобы маршрут от динамически Docker моста к хосту , В противном случае контейнер a не может подключиться к контейнеру b, потому что по умолчанию нет маршрута от сети докеров до самого узла докера.

У меня есть следующие настройки:

container-nginx (docker) 
| 
|-container-jira (docker) (https://jira.example.com) 
|-container-confluence (docker) (https://confluence.example.com) 

Для того, чтобы иметь исправный связи приложений Atlassian между Jira и Confluence:

Я использую docker-compose для всей настройки, и все контейнеры находятся внутри одной сети. По умолчанию это не сработает, я получаю «без маршрута к хосту» в обоих контейнерах для хостов confluence.example.com и jira.example.com. Поскольку каждый контейнер внутри докеревой сети не имеет маршрута к самому хосту докера.

В настоящее время при каждом инициализации установки я вручную создаю правило iptable из динамически созданного моста докеров с идентификатором «br-wejfiweji» на хост.

Это громоздко, есть ли «новый способ» или «лучший способ» сделать это в Docker 1.11.x?

ответ

1

docker-compose version 2 создает сеть, которая позволяет всем контейнерам видеть друг друга. См «Networking in Compose» (с грузчиком 1.10)

Если контейнеры созданы с правом имя хоста, то есть jira.example.com и confluence.example.com (см docker-compose.yml hostname directive), Nginx может прокси-перейти непосредственно к jira.example.com и confluence.example.com.
Эти два имени хоста будут разрешать правильный IP-адрес в сети, созданный docker-compose для этих контейнеров 3 (nginx, jira и confluence).

Я предлагаю в комментариях использовать alias для того, чтобы JIRA, чтобы увидеть слияние как Nginx (Nginx будучи псевдонимы до слияния), для того, чтобы JIRA всегда использовать Nginx при доступе к сплошности.

version: '2' 

services: 
    # HTTPS-ReverseProxy 
    nginx: 
    image: blacklabelops/nginx 
    container_name: nginx 
    networks: 
     default: 
     aliases: 
      - 'crucible.example.com' 
      - 'confluence.example.com' 
      - 'crowd.example.com' 
      - 'bitbucket.example.com' 
      - 'jira.example.com' 
    ports: 
     - '443:443' 
+0

Я уже использую docker-compose 2. В моем случае маршрут должен быть jira -> nginx (https) -> слияние. Как подключить несколько имен хостов (например, jira.example.com, confluence.example.com) к одному контейнеру nginx? – blacklabelops

+0

@maybeg version2 означает, что все контейнеры видят друг друга: jira видит nginx и слияние. Попробуйте 'docker exec bash' и посмотрите, можете ли вы пинговать два других контейнера. – VonC

+0

Мне нужно проложить маршрут по nginx, потому что каждый экземпляр обращается к другому экземпляру с помощью https protocoll. Ссылка приложения используется продуктами atlassian для создания ссылок внутри ui. Ссылка http будет работать между экземплярами, и да, они будут пинговать и видеть друг друга, но созданная ссылка http внутри ui не будет работать внутри браузера. – blacklabelops

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