Мы начали использовать контейнеры при создании инструментов и утилит, поэтому отдельным разработчикам не нужно беспокоиться об установке необходимых компонентов. Отлично работает, например:
docker run --rm -v $PWD/input.yaml:/input.yaml our.registry.com/dev/toolA /input.yaml
Пока toolA
не потребуется вызвать другую утилиту, toolB
, которая также заключена в контейнер.
Есть ли общий способ запустить контейнер изнутри контейнера, чтобы он работал с docker, podman или чем-то еще, что есть в container-tech-du-jour, без того, чтобы вызывающий toolA
добавлял страшные дополнительные параметры, такие как, например, --privileged=true
или -v /var/run/docker.sock:/var/run/docker.sock
?
Я знаю, что можно запустить docker-in-docker, и, по-видимому, можно также запустить podman-in-podman, но это не рекомендуется. Добавление -v /var/run/docker.sock:/var/run/docker.sock
- это рекомендуемый подход, но это только для докеров, верно?
Потому что в противном случае это ненадежная абстракция. В настоящее время я создаю toolA
, включая основные части контейнера toolB
в toolA
, делая toolA
чувствительным к изменениям в реализации toolB
, которых я бы хотел избежать. Или я мог бы собрать toolA
, но поддерживать только докер и требовать от пользователей добавления параметра -v /var/run/docker.sock:/var/run/docker.sock
:-(.
Есть ли более элегантный способ вызова контейнера toolB
s из контейнера toolA
, который работает со всеми распространенными технологиями контейнеров и не требует дополнительных параметров при запуске toolA
?