Описание тега docker-in-docker

Docker-in-Docker (DinD) — это необычный подход к запуску контейнеров Docker путем запуска вложенного демона 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, скорее всего, не по теме.