У меня есть изображение, которое я использую для запуска моих сборников CI/CD (с использованием GitLab CE). Я хотел бы, чтобы развернуть мое приложение делает что-то вроде этого внутри контейнера:Доступ к хост-докер-машине из контейнера
eval "$(docker-machine env manager)"
sudo docker stack deploy --compose-file docker-stack.yml web
Однако, я хотел бы докер-машину к машинам доступа, определенных на хост-системе, так как контейнер будет разрушен, и я не хотите включать сведения о доступе на изображение.
Я попробовал несколько вещей
доступ к удаленному хосту через docker-machine
- Создать докер-машину на хосте и установите
MACHINE_STORAGE_PATH
так, что она доступна для контейнера - Подключение к дистанционной докерной машине вручную из контейнера и установка
MACHINE_STORAGE_PATH
, равная установленному объему - Монтаж Docker гнездо
В обоих случаях я могу видеть, хранение машина сохраняется, но всякий раз, когда я создаю новый контейнер и запустить docker-machine ls
ни один из машин не указаны.
Доступ к удаленному хосту с помощью DOCKER_HOST
- вперед порт удаленного машины докера в порт хоста Docker
docker-machine ssh manager-1 -N -L 2376:localhost:2376
export DOCKER_HOST=:2376
- Скажите докер использовать одни и те же сертификаты, которые используются docker- машины:
export DOCKER_TLS_VERIFY=1
иexport DOCKER_CERT_PATH=/Users/me/.docker/machine/machines/manager-1
- Испытание с
docker info
Это дает мне error during connect: Get https://localhost:2376/v1.26/info: x509: certificate signed by unknown authority
Любые идеи о том, как я могу выполнить удаленное развертывание внутри контейнера?
Благодаря
EDIT
Вот схема, чтобы попытаться помочь лучше общаться сценарий.
Я бы не установил 'docker.sock', как было рекомендовано. см. эту статью для информации https://raesene.github.io/blog/2016/03/06/The-Dangers-Of-Docker.sock/ вы открываете большое отверстие безопасности. –
Вы считаете, что это большая часть риска, если единственным контейнером, работающим на сокете, является контейнер сборки? – jaredcnance
Обычно вы не хотите запускать контейнер внутри контейнера. если вам нужен доступ к томам, вы должны вместо этого «-link» или с помощью 'docker> = 1.12' создать сетевой оверлей. нет ничего плохого в использовании контейнера для запуска других контейнеров, просто запустите их на главной машине, а не внутри контейнера. делать контейнеры в контейнерах - это анти-шаблон, с которым вам со временем сложно справиться. –