Поскольку я впервые знал о Докере, я думал, что это может быть решение для нескольких проблем, с которыми мы обычно сталкиваемся в лаборатории. Я работаю аналитиком данных для небольшой исследовательской группы по биологии. Я использую Snakemake для определения очень больших и довольно сложных рабочих процессов для наших анализов.Докер для однократного применения CLI
Из Snakemake я обычно называю небольшие скрипты в R, Python или даже приложения командной строки, такие как выравниватели или инструменты аннотации. В этом случае нередко страдает адский ад, поэтому я думал об обертывании некоторых из инструментов в контейнерах Docker.
В этот момент я застрял в точке, где я не знаю, плохо ли я выбрал технологию, или если я не могу должным образом усвоить всю информацию о Докере.
Проблема связана с тем, что вы должны запускать инструменты Docker как root, чего я бы совсем не хотел делать, поскольку первоначальная идея заключалась в том, чтобы сделать докерезированные приложения доступными для каждого исследователя, желающего используй их.
В AskUbuntu наиболее проголосовавший ответ предлагает добавить конечного пользователя в группу докеров, но, похоже, это не хорошо для безопасности. С другой стороны, в статье security articles at Docker объясняется, что использование инструментов в качестве корня полезно для вашей безопасности. Я нашел similar questions at SO, но связан с окружающей средой внутри контейнера.
Хорошо, у меня нет проблем с этим, но, как и каждый пример с умеренной сложностью, который я обнаружил, он, похоже, больше ориентирован на разработку веб-приложений, где система может сначала запустить контейнер один раз, а затем забыть о Это.
Вещей я рассматриваю прямо сейчас:
- Настройка демона Docker как TLS-enabled, TCP удаленного обслуживание, и предоставить соответствующие пользователь сертификатов. Будут ли накладные расходы при запуске приложений? Проблемы с безопасностью?
- Создайте изображения, которые только делают доступным приложение для хоста, делясь томом /usr/local/bin/ или похожим. Это безопасно? Как создать демоннизированный контейнер, который ничего не должен выполнять? Единственный пример, который я нашел, подразумевает создание an infinite loop.
- Страница nucleotid.es выглядит как-то похожее на то, что я хочу, но я не нашел ссылки на проблемы безопасности. Возможно, они запускают все контейнеры внутри виртуальной машины, где им не нужно беспокоиться об этих проблемах, из-за того, что им не нужно подвергать докционированные приложения большему количеству людей.
Извините за мою многословие. Я просто хотел записать умственный процесс (возможно, испорченный, я знаю, знаю), где я застрял. Подводя итог:
Есть ли возможность создать приложение для докционированной командной строки, которое не нужно запускать с использованием sudo, доступно для нескольких человек на одном сервере и не предназначено для запуска в демонтированном мода?
Заранее спасибо.
С уважением.
Вы говорите: «Проблема связана с тем, что вы должны запускать инструменты Docker как root», это неправильно, в файле Docker вы можете использовать 'USER', чтобы использовать непривилегированную учетную запись, см. документ http://docs.docker.com/reference/builder/#user – user2915097
Спасибо за ваш комментарий. Да, но это относится к контейнеру. Он изменяет пользователя, выполняющего процессы внутри, и влияет на следующие команды RUN, CMD и ENTRYPOINT. Но в этом случае я говорил о внешней стороне, пользователь, который фактически запускает контейнер докера, создает хост. – Fernandez