Для веб-хостинга моя компания хочет использовать контейнеры docker для каждого веб-приложения с обратным прокси в качестве фронтенда. Это работает, но мы ищем способ позволить нашим пользователям управлять своими собственными приложениями, администраторы будут контролировать публичный и частный доступ через обратный прокси и DNS.
Но мы не можем предоставить пользователю полномочия на запуск/остановку экземпляров Docker, поскольку пользователь, который может отправлять команды демону Docker, может делать все, что захочет (как описаноздесьиздесь).
Итак, как мы можем позволить пользователю управлять запуском/остановкой и настройкой некоторых конкретных Docker-контейнеров?
Единственное решение на данный момент (найденоздесь) — это позволить Docker обнаружить изменения в реестре, чтобы загрузить и перезапустить обновления, например, с помощьюСторожевая башня).
Другая альтернатива —дождитесь поддержки пространства имен пользователячтобы избежать этого, корневой пользователь контейнера может получить доступ к корневому пользователю хоста, но будет ли этого достаточно?
редактировать: docker не так уж и силен в плане безопасности, но в нашем случае:
- Доступ разрешен только аутентифицированным внутренним сотрудникам.
- Пользователи не могут напрямую получить доступ к демону Docker (в этом и суть моего вопроса)
- Это лучшее решение, чем одноэкземплярный Apache с сотней виртуальных хостов.
- Нам необходимо иметь дело с требованиями об альтернативных веб-фреймворках/экзотических конфигурациях (node.js, meteor, ruby) вместо классического LAMP, а контейнеры отлично подходят разработчикам для переноса своих приложений на хостинговую платформу.
- Это эксперимент, который мы проводим, и мы надеемся, что в недалеком будущем появятся такие решения, какпроект атомныйи/или поддержка пространства имен пользователей обеспечит лучшие гарантии.
решение1
Вы могли бы добавить в интерфейс вашего клиента опцию, которая показывает ему контейнер, которым он владеет, и позволяет ему перезагружать свой контейнер черезAPI удаленного Docker
Однако этот вариант следует использовать только в том случае, если у вас есть безопасный пользовательский интерфейс и хорошее управление правами пользователей.
Имейте в виду, что удаленный API Docker изменится в следующей версии 1.9 в конце октября.Дорожная карта 1.9