Перезапустите докер-контейнер из другого работающего контейнера. - PullRequest
2 голосов
/ 21 мая 2019

Я использую docker-compose для развертывания. Я хочу перезапустить мой контейнер "centos-1" из контейнера "centos-2". Оба контейнера работают на одном хосте. Пожалуйста, предложите, как я могу достичь этого самым простым и автоматизированным способом?

Я следовал Как запустить скрипт оболочки на хосте из контейнера докера? и попытался запустить скрипт на хосте из контейнера "centos-2", но скрипт выполняется внутри контейнера, а не в хозяйничать.

Сценарий:

    #!/bin/bash
    sudo docker container restart centos-1

Ошибка:

    line 2: docker: command not found

(Docker не установлен ни в одном контейнере centos-2)

Ответы [ 2 ]

3 голосов
/ 21 мая 2019

Вам нужно:

  1. Установите интерфейс командной строки Docker (интерфейс командной строки) на второй контейнер. Не путайте с полноразмерной установкой - вам не нужен демон Docker, только инструмент командной строки (docker исполняемый файл)

  2. Сообщите вам демон хоста хоста (службы), чтобы сделать его доступным во втором контейнере . Это достигается простым разделением /var/run/docker.sock при запуске второго контейнера, например:

    docker run ... -v "/var/run/docker.sock:/var/run/docker.sock" container2 ...
    
  3. Теперь вы можете выполнить любую команду Docker, например, docker stop из второго контейнера, и эти команды успешно передаются вашему основному (и единственному) демону Docker.

2 голосов
/ 21 мая 2019

Существует подход из контекста CI для управления Docker Daemon в системе из запущенного контейнера Docker-out-of-Docker (DooD):

  1. вы должны установить Docker внутриваш контейнер
  2. Отобразите установку докера из вашей системы внутри вашего контейнера, используя volumes
  -v /var/run/docker.sock:/var/run/docker.sock

Теперь каждая команда докера внутри вашего контейнера выполняется при установке системного докера.Например, если вы наберете docker image list внутри своего контейнера, список должен быть таким же, как если бы вы вводили команду в вашей системе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...