2016-08-30 2 views
1

Мне было интересно, можно ли проверить контейнер, запущенный на рабочем узле из узла менеджера? Контейнер был создан с помощью создания докеров. Из узла менеджера я могу получить идентификатор службы задачи (через службу докеры ps и даже идентификатор контейнера (через проверку докеров). Моя конечная цель - найти ip-адрес контейнера. Любая помощь будет очень благодарна!Режим Роя: Осмотрите контейнер рабочего узла на узле менеджера

Дополнительная информация:

Docker версия 1.12.1

ОС: CentOS Linxus 7

+0

'Докер inspect' претендует на поддержку задач в дополнение к изображениям и контейнеров. – BMitch

ответ

1

Там нет прямой путь, чтобы получить, что еще Вы должны просто забыть о работе с IP-адресов и полагаться. разрешая использование имен DNS (имена служб).

Если вы действительно этого хотите, вы можете создать скрипт, который сделает следующее.

  1. Получить идентификаторы задач и их имена узлов для вашей службы.

    docker service ps myservice 
    

    Это будет возвращать что-то вроде

    ID       NAME IMAGE  NODE  DESIRED STATE CURRENT STATE   ERROR 
    31cb7clxw3lfi1y6ko12edjys foo.1 alpine:3.4 vmw-node03 Running  Running 30 minutes ago 
    9gkzs118txbc8a8gvla3bildq foo.2 alpine:3.4 vmw-node01 Running  Running 30 minutes ago 
    

    Услуга имеет две задачи, работающие на разных узлах.

  2. Получить идентификатор контейнера для каждой задачи

    Я просто делаю это для одной задачи здесь

    docker inspect --format "{{.Status.ContainerStatus.ContainerID}}" 31cb7clxw3lfi1y6ko12edjys 
    

    которая возвращает идентификатор контейнера для выполнения этой задачи

    13a24dff4bd1f9351938b09d32db451406ed64b5f890f66f18fec12c611e9175 
    
  3. Получение контейнера IP

    docker $(docker-machine config vmw-node03) inspect --format "{{.NetworkSettings.IPAddress}}" 13a24dff4bd1f9351938b09d32db451406ed64b5f890f66f18fec12c611e9175 
    

    Который возвращает

    172.17.0.2 
    
+0

Спасибо за ваш ответ! Есть ли способ сделать это без докер-машины? Я уже создал отдельные экземпляры без Docker Machine – chewie

+0

. Часть узла 'docker-machine config 'предназначена только для того, чтобы сообщить вашему докере клиенту, к которому подключился демон (узел) докеров. Вы можете либо ssh войти в правильный узел и запустить 'docker inspect ... ', либо вы можете установить локальную среду с соответствующими переменными DOCKER и запустить ваш docker-клиент. Запустите 'docker-machine config somenode', чтобы получить представление о env vars, которые нужно установить. – Alkaline