Запуск сценария вне контейнера Docker
Я пытаюсь сделать автоматическое развертывание, так что...
у меня есть .sh
скрипт для автоматического извлечения изображений докера, например:
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, если это тот путь, по которому вы хотите идти.