Описание тега docker-in-docker
«Docker-in-Docker» (DinD) — это необычный подход к запуску контейнеров Docker: вместо использования
docker run
обычно оператор может запустить Docker Hub
docker image
чтобы запустить второй демон Docker внутри контейнера, а затем запустить контейнеры внутри этого вложенного демона Docker.
Для большинства практических целей, если контейнеру необходимо запустить другой контейнер, он может использовать сокет Docker хоста.
docker run -v /var/run/docker.sock:/var/run/docker.sock ...
Этот подход иногда называют «Docker-out-of-Docker», в отличие от вложенной установки Docker-in-Docker.
Сообщение в блоге Жерома Петаццони Используете Docker-in-Docker для среды непрерывной интеграции или тестирования? Подумать дважды.описывает некоторые преимущества и проблемы установки DinD. В этом посте отмечается:
Основная цель Docker-in-Docker заключалась в том, чтобы помочь в разработке самого Docker. Многие люди используют его для запуска CI (например, с Jenkins), что на первый взгляд кажется хорошим, но они сталкиваются со многими «интересными» проблемами, которых можно избежать, вместо этого подключив сокет Docker к контейнеру Jenkins.
Тег docker-in-docker следует использовать в вопросах о настройке DinD. В нем не описываются вопросы о совместном использовании сокета Docker хоста. В большинстве случаев эти вопросы также будут помечены тегом docker. Помните, что вопросы о переполнении стека должны быть связаны с программированием: вопросы о настройке систем непрерывной интеграции или копировании образов между демонами Docker, скорее всего, не по теме.