Как разрешить пользователю управлять веб-приложениями с помощью Docker?

Как разрешить пользователю управлять веб-приложениями с помощью Docker?

Для веб-хостинга моя компания хочет использовать контейнеры docker для каждого веб-приложения с обратным прокси в качестве фронтенда. Это работает, но мы ищем способ позволить нашим пользователям управлять своими собственными приложениями, администраторы будут контролировать публичный и частный доступ через обратный прокси и DNS.

Но мы не можем предоставить пользователю полномочия на запуск/остановку экземпляров Docker, поскольку пользователь, который может отправлять команды демону Docker, может делать все, что захочет (как описаноздесьиздесь).

Итак, как мы можем позволить пользователю управлять запуском/остановкой и настройкой некоторых конкретных Docker-контейнеров?

Единственное решение на данный момент (найденоздесь) — это позволить Docker обнаружить изменения в реестре, чтобы загрузить и перезапустить обновления, например, с помощьюСторожевая башня).

Другая альтернатива —дождитесь поддержки пространства имен пользователячтобы избежать этого, корневой пользователь контейнера может получить доступ к корневому пользователю хоста, но будет ли этого достаточно?

редактировать: docker не так уж и силен в плане безопасности, но в нашем случае:

  • Доступ разрешен только аутентифицированным внутренним сотрудникам.
  • Пользователи не могут напрямую получить доступ к демону Docker (в этом и суть моего вопроса)
  • Это лучшее решение, чем одноэкземплярный Apache с сотней виртуальных хостов.
  • Нам необходимо иметь дело с требованиями об альтернативных веб-фреймворках/экзотических конфигурациях (node.js, meteor, ruby) вместо классического LAMP, а контейнеры отлично подходят разработчикам для переноса своих приложений на хостинговую платформу.
  • Это эксперимент, который мы проводим, и мы надеемся, что в недалеком будущем появятся такие решения, какпроект атомныйи/или поддержка пространства имен пользователей обеспечит лучшие гарантии.

решение1

Вы могли бы добавить в интерфейс вашего клиента опцию, которая показывает ему контейнер, которым он владеет, и позволяет ему перезагружать свой контейнер черезAPI удаленного Docker

Однако этот вариант следует использовать только в том случае, если у вас есть безопасный пользовательский интерфейс и хорошее управление правами пользователей.

Имейте в виду, что удаленный API Docker изменится в следующей версии 1.9 в конце октября.Дорожная карта 1.9

Связанный контент