Подтвердить что ты не робот

Как я могу запускать контейнеры отдельно и автоматически удалять их при их выходе?

Почему конфликтующие аргументы -d и --rm в Docker?

$ docker run -d --rm image
Conflicting options: --rm and -d

У меня есть несколько контейнеров, которые запускают тесты unit/functional/integration. Контейнеры Docker запускаются, запускают тесты, а затем останавливаются. Я запускаю их отдельно, так как я только забочусь о результатах, но мне также хотелось бы, чтобы контейнеры были удалены после выхода контейнера. Что было бы хорошим способом сделать это?

4b9b3361

Ответ 1

В настоящее время (Docker v1.1.1) эта функция не поддерживается. Разработчик функции --rm объясняет причины этого в PR # 1589:

В настоящее время поддерживается только тогда, когда -d не предоставляется. Нет смысла автоматически удалять контейнер, созданный с помощью docker run -d. Есть две причины, почему это реализовано таким образом: 1) мы можем захотеть получить какой-то статус выхода или журналы до удаления контейнера 2) сделать этот прогон на стороне сервера сложным в текущей архитектуре.

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

Кроме того, обходной путь не слишком сложный, вы можете запускать свои контейнеры с помощью оболочки script следующим образом:

ID=$(docker run -d ubuntu sleep 3)
docker wait $ID
docker rm $ID

Ответ 2

Эти параметры больше не конфликтуют с версией Docker версии 1.13.0

Был запрос на перенос, который перемещает опцию демона --rm и позволяет запускать контейнеры, отсоединенные с помощью опции удаления: https://github.com/docker/docker/pull/20848