2015-07-30 4 views
1

Я ищу способ для пользователя, чтобы иметь возможность выполнять ограниченный набор команд на хосте, а только доступ к нему из контейнеров/браузера. Цель состоит в том, чтобы не допустить, чтобы SSH'ing хосту просто запускал команды изредка, например make start, make stop и т. Д. Эти команды make просто выполняют серию команд docker-compose и нужны иногда в dev.Выполнять команды хоста из контейнера докеров

два возможных пути в которых я могу думать, являются:

  • Via Cloud9 терминал внутри браузера (мы уже использовать его). По умолчанию этот терминал, конечно, обращается к самому контейнеру.
  • С помощью пользовательского мини-webapp (например, node.js/express) с кнопками, которые сопоставляются командам. Это было бы легко сделать, если вы работаете на самом хосте, но я хочу, чтобы весь код был подобным контейнерам.
+0

Спасибо за пояснения, что доступ к процессам хоста играет против методологии Докера. Думаю, тогда ответ заключается в том, что мне нужен процесс без докеров (например, веб-сервер), который выполняется непосредственно на хосте вместо вместо контейнера. – rgareth

ответ

0

Контейнер не должен вылетать и получать доступ к хосту. Докер - это (помимо прочего) изоляция процесса. Тем не менее, вы можете найти различные трюки для выполнения некоторого кода на хосте, если вы его настроили.

1

Этот подход будет против концепций докеров process/resources encapsulation. С докером вы инкапсулируете полностью обрабатывает хост и друг от друга (если вы не связываете контейнеры/тома). Из контейнера докеров вы не видите никаких процессов, запущенных на хосте из-за process namespaces. Когда вы теперь хотите выполнить процессы на хосте из контейнера, который будет против методологии докера.

3

Хотя это может быть не самая лучшая практика, все же можно контролировать хост изнутри контейнера. Если вы выполняете команды докере-компоновки, вы можете связать монтировку сокета-докера, используя -v /var/run/docker.sock:/var/run/docker.sock на ubuntu. Если вы хотите использовать другие системные инструменты, вам нужно будет привязать все необходимые тома, используя -v, это очень сложно и утомительно, если вы хотите использовать системные бункеры, которые используют файлы /lib.*.so.

Если вам нужно использовать sudo команды не забудьте добавить --privileged флаг при запуске контейнера

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