Назад | Перейти на главную страницу

Выключите все докер-контейнеры

Я только что обнаружил это service docker stop в Ubuntu 18.04 не закрываются все запущенные контейнеры. Я больше не могу их контролировать, но containerd-ship процессы и все, что находится внутри контейнеров, все еще работает (но недоступно, возможно, из-за удаления сети).

Кроме того, остановка containerd ничего не меняет, потому что по замыслу это не останавливает контейнеры.

И даже после killall containerd-shim что уже довольно сложно, некоторые процессы все еще работают, например gunicorn из gitlab, backuppc и экземпляра Linux UML

Как мне полностью отключить все работающие контейнеры? Из-за текущего поведения моя система зависает при выключении.

Обновить: Я только что увидел, что использую репо (https://download.docker.com/linux/ubuntu), который взят из учебника Kubernetes (который я еще не использую). Этот источник содержит проприетарные версии containerd.io, docker-ce и docker-ce-cli.

Задача решена.

Главное было то, что у меня был дополнительный репозиторий, прямо из докера (https://download.docker.com/linux/ubuntu), который принес проприетарные версии containerd.io, docker-ce и docker-ce-cli. С другой стороны, вселенная Ubuntu даже не входила в мою /etc/apt/source.list.

Теперь я обновился до 20.04 и использую оригинальные пакеты докеров (docker.io) из вселенной ubuntu. Это работает нормально и отключается, как ожидалось. Я уверен, что это также сработало бы 18.04, но я хотел избежать перехода на более раннюю версию докера, переключив репо.

На моей установке Ubuntu 18.04 systemctl stop docker выключает все запущенные контейнеры. systemctl start docker снова запускает все контейнеры. Я согласен с BMitch, для диагностики проблемы потребуется дополнительная информация о вашей установке.

Другой способ выключить все работающие контейнеры:

docker ps -q | xargs docker stop