Всем привет!
Бывают случаи, когда необходимо создать контейнер из другого контейнера (runner в CI, сбор дополнительных метрик). Как это можно сделать?
Есть несколько основных «стратегий»:
🍭 Docker in Docker, DinD – официальный образ, который позволяет запускать контейнер внутри контейнера we need to go deeper. Нюанс – ему требуется –privileged
🍭 Docker out of Docker, DooD – реализуется через
🍭 Альтернативные runtime – реализуется при помощи «подмены» runtime, например, на sysbox-runc
Более подробно про это можно почитать в статье. В целом практика, хоть и существует, не является безопасной и рекомендуемой.
А вы используете такие подходы? Если да, то зачем и почему без этого нельзя обойтись?
Бывают случаи, когда необходимо создать контейнер из другого контейнера (runner в CI, сбор дополнительных метрик). Как это можно сделать?
Есть несколько основных «стратегий»:
🍭 Docker in Docker, DinD – официальный образ, который позволяет запускать контейнер внутри контейнера we need to go deeper. Нюанс – ему требуется –privileged
🍭 Docker out of Docker, DooD – реализуется через
mount /var/run/docker.sock
, что позволяет использовать docker engine хоста для запуска контейнера «по соседству». Нюанс – можно получить информацию о контейнерах на хосте🍭 Альтернативные runtime – реализуется при помощи «подмены» runtime, например, на sysbox-runc
Более подробно про это можно почитать в статье. В целом практика, хоть и существует, не является безопасной и рекомендуемой.
А вы используете такие подходы? Если да, то зачем и почему без этого нельзя обойтись?