2015-06-05 2 views
0

Поскольку я впервые знал о Докере, я думал, что это может быть решение для нескольких проблем, с которыми мы обычно сталкиваемся в лаборатории. Я работаю аналитиком данных для небольшой исследовательской группы по биологии. Я использую 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, доступно для нескольких человек на одном сервере и не предназначено для запуска в демонтированном мода?

Заранее спасибо.

С уважением.

+0

Вы говорите: «Проблема связана с тем, что вы должны запускать инструменты Docker как root», это неправильно, в файле Docker вы можете использовать 'USER', чтобы использовать непривилегированную учетную запись, см. документ http://docs.docker.com/reference/builder/#user – user2915097

+0

Спасибо за ваш комментарий. Да, но это относится к контейнеру. Он изменяет пользователя, выполняющего процессы внутри, и влияет на следующие команды RUN, CMD и ENTRYPOINT. Но в этом случае я говорил о внешней стороне, пользователь, который фактически запускает контейнер докера, создает хост. – Fernandez

ответ

1

Если пользователи смогут выполнить docker run тогда будет в состоянии контролировать хост-систему только потому, что они могут отображать файлы из хоста в контейнер и в контейнере они всегда могут быть корни, если они могли бы использовать docker run или docker exec. Таким образом, пользователи не могут напрямую выполнять докеры. Я думаю, что самое легкое решение здесь для создания скриптов, которые запускают докер и эти сценарии, может иметь либо флаг suid, либо пользователи могут иметь доступ к ним sudo.

+0

Большое спасибо! На самом деле, на странице проекта nucleotid.es говорилось о написании сценариев, выступающих в качестве оберток для вызова. Я не помню, чтобы в этом случае ничего не читал о флагом suid, но я собираюсь попробовать это так. Я думаю, что я был психически заблокирован и не мог видеть за пределами места, где я застрял. – Fernandez

+0

Я попытался реализовать эту идею, но я пришел к следующему [информации] (http://www.tuxation.com/setuid -on-shell-scripts.html), и это снова вызвало мои проблемы с безопасностью. Кажется, что я бы хотел сделать, может быть, не имеет ничего общего с Докером. – Fernandez

+1

Да, это напрямую не связано с докером. suid-скрипты проще в использовании, но если они отключены, вы все равно можете использовать метод wrapper или sudo. В статье говорится, что некоторые дистрибутивы отключают suid-скрипты, потому что легко ошибиться в них, что приведет к эксплойту - да, вы должны быть осторожны с ними - не позволяйте пользователям указывать параметры докеров и/или выполнять команду, проверять параметры, когда они вам понадобятся. Или вы можете использовать другой язык (c/go/python) для пусковых установок, но вам все равно нужно разрешить только необходимые параметры, и вам все равно нужно их проверить. – ISanych

Смежные вопросы