Могу ли я заставить докер-контейнер перезапускаться из образа?

Фон

У меня есть контейнер, в котором запущено множество вещей, включая интерфейс, доступный другим разработчикам.

Пользователи собираются загружать некоторые из своих сценариев оболочки / python в мой контейнер для запуска.

Чтобы мой контейнер работал, я планирую отправить сценарий в контейнер-родственник, который затем запустит их и отправит мне ответ. Сценарии пользователя должны иметь возможность загружать внешние пакеты и т. д.

Затем я хочу, чтобы родственный контейнер был "очищен"

Вопрос

Могу ли я перезапустить этот родственный контейнер из исходного образа после того, как будет выполнен запуск пользовательского скрипта? Таким образом, пользователи могут получить постоянно чистый контейнер для запуска своих скриптов.

Примечание

Если я полностью лаю не на то дерево с помощью этого раствора, пожалуйста, дайте мне знать. Я пытаюсь реализовать некоторые странные функции и могу подойти к этому с неправильной точки зрения.

ИЗМЕНИТЬ 1 (другие подходы и почему я не думаю, что они мне нравятся)

Две альтернативы, о которых я подумал, - это наличие контейнера с контейнерами для внешнего интерфейса. Или попросите родственный контейнер запускать на нем контейнеры докеров. Но эти два решения сталкиваются с трудностями Docker-in-docker. Другое решение может заключаться в повышении разрешений моего внешнего контейнера до тех пор, пока он не сможет на лету создавать родственные контейнеры для запуска скриптов. Но меня беспокоит, что это может привести к предоставлению моему внешнему контейнеру излишне высоких разрешений.

РЕДАКТИРОВАТЬ 2 (вся документация, которую я нашел, о перезапуске самого контейнера)

Мне известна документация по автоперезапуск, но я не верю, что это очистит содержимое контейнеров. Например, если на него был загружен файл.

Если мой ответ отвечал на ваш вопрос, принято его принимать :)

hjsimpson 22.10.2018 20:36
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
0
1
1 061
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Мой ответ имеет серьезные последствия для безопасности.

Вы можете управлять своими родственными контейнерами из основного контейнера, если вы сопоставите сокет докера с хоста с вашим основным контейнером.

docker run -v /var/run/docker.sock:/var/run/docker.sock ...

Теперь у вас есть полный контроль над движком докеров из вашего основного контейнера. Вы можете start, stop и т. д. Ваши родственные контейнеры и порождать новых (чистых) братьев и сестер. Но помните, что это фактически предоставляет корневые права хоста вашему основному контейнеру.

Другие вопросы по теме