Мне нравятся инструменты командной строки так же, как следующий инженер-программист; и я считаю, что Docker не должен быть частью вашего решения .
Как потребитель инструмента, я прекрасно осознаю две важные детали: мне вообще нужны права, эквивалентные root, для запуска чего-либо в Docker, и что контейнеры Docker имеют отдельные пространства файловой системы от моего основного приложения. На примере самого Docker хорошо знать, что я могу
docker images | grep dmaze | awk '{ print $1 ":" $2 }' | xargs docker rmi
, но это становится намного труднее, если я заменю docker
на расширенный вызов docker run -e ... -v ... -v ... vendor/imagename command
.
Точно так же стоит просмотреть Переполнение стека для таких вопросов:
Я упаковал свой инструмент в Docker. Я пытаюсь запустить это. Какая опция docker run -v
мне нужна, чтобы предоставить ей доступ к моим файлам? Он не запускается как root; какие настройки разрешений мне нужны? Если у меня есть один файл, который ссылается на другой, как мне сделать имена файлов согласованными в разных средах? Я забыл docker run -v
, мой выходной файл полностью исчез?
Если ваши инструменты упакованы как образ Docker, вы переносите все эти сложности на пользователя; мне просто проще что-то уронить в $PATH
.
Преимущества для вас, как поставщика инструмента, кажутся довольно минимальными. Образ Docker - это отдельный артефакт, но также и файл tar. Вы, вероятно, можете положиться на общедоступный набор базовых библиотек C и языков исполнения; например, вы можете многое сделать с помощью стандартной библиотеки Python, и почти в каждой установке Linux это будет доступно.
Kubernetes определенно не применим здесь. Это наиболее полезно для запуска распределенных приложений в кластерных средах. У некоторых очень преданных разработчиков может быть minikube
, но это не повседневная задача, и получение интерактивной оболочки в модуле Kubernetes является еще большим исключением, чем получение в контейнере Docker (или должно быть). .