Назад | Перейти на главную страницу

Как запустить образ Docker на другом хосте Docker?

В настоящее время мы используем Docker для разработки и в настоящее время изучаем, как мы можем использовать Docker для запуска нашего программного обеспечения в других средах, таких как промежуточная и производственная.

Что мы делаем сейчас, так это то, что мы компилируем наше программное обеспечение Java с помощью Jenkins, а затем - в той же сборке Jenkins - также создаем образ Docker, который программное обеспечение Java будет запускать с помощью docker-compose.

Теперь, после создания образа Docker, нам нужно передать этот образ на (удаленный) хост Docker, на котором должно запускаться программное обеспечение. Этот удаленный хост Docker НЕ совпадает с хостом, на котором работает Jenkins. Я считаю, что мы можем сделать это, следуя принятому ответу на этот вопрос.

Однако, как только образ был скопирован на Docker Host - как нам запустить этот образ с docker-compose? Изображение, которое мы скопировали, - это просто изображение, а не docker-compose.yml файлы или Dockerfile в этом отношении.

Вы можете настроить демон Docker на хосте Docker для прослушивания TCP-порта, а не /var/run/docker.sock разъем. Вам просто нужно запустить dockerd на этом хосте с одним дополнительным параметром:

-H tcp://<IP>:<PORT>

Увидеть документация для подробностей.

Получив это, вы можете указать docker-compose на своем узле Jenkins подключаться к удаленному демону через TCP, а не использовать локальный сокет, предоставив тот же -H флаг, указывающий на ваш хост и порт Docker.

Таким образом, на этой машине будут запускаться любые докер-контейнеры.

Лично настроил бы частный реестр Docker или использовал бы частные репозитории, например, на Dockerhub. Это также может означать, что Dockerhub сам может создавать образы (на своих серверах или на вашем собственном), а затем отправлять их в репозиторий с тегом «последний», когда это будет успешно - очень полезно ИМО.

Если вы работаете в Linux, вам вообще не нужно напрямую устанавливать Docker в контейнер. Вы можете связать монтирование двоичного файла докера (обычно в / usr / bin / docker) напрямую. Обратите внимание, что привязка при установке сокета не дает вам полностью нового Docker, а скорее дает доступ к существующему демону Docker изнутри контейнера. Если вы хотите записать двоичный файл Docker в образ, вы всегда можете создать его с именем laoyumi / docker или что-то в этом роде, а затем «быстро» получить к нему доступ в другом образе, просто запустите Dockerfile из laoyumi / docker.