Запуск сценария вне контейнера docker

#docker #autodeploy

#docker #автоматическое развертывание

Вопрос:

Я пытаюсь выполнить автоматическое развертывание, так что…

У меня есть .sh скрипт для автоматического извлечения изображений docker, например:

 docker pull mongo
docker stop db
docker rm db
docker run --name db -d mongo
  

И я жду запроса POST, чтобы запустить его.

Итак, у меня есть контейнер (с nginx) для работы в качестве сервера. Но я должен вызвать этот скрипт вне контейнера, потому что он может обновить любой контейнер.

Возможно ли это? Если да, то как?

Ответ №1:

Мне кажется, что вы ищете сокет Docker UNIX. См. Некоторые пояснения здесь (возможно, лучше всего прокрутить вниз до части «Решение» этой страницы. В принципе, вы должны запустить свой контейнер Nginx с подключенным сокетом UNIX. Это позволяет использовать docker команду из контейнера Nginx в других родственных контейнерах.

Важное замечание по безопасности:

Использование сокета UNIX является определенной проблемой безопасности, особенно если вы предоставляете его всемирной сети. См. [1] и [2]. Другие альтернативы могут включать использование Docker-in-Docker, хотя я не уверен, что это подходит для вашего случая прямо здесь. Docker опубликовал сообщение в блоге о том, как защитить сокет UNIX здесь, если вы хотите пойти по этому пути.