Завершить работу всех докер-контейнеров.

Завершить работу всех докер-контейнеров.

Я только что обнаружил, что 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

решение1

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

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

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

решение2

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

Другой способ остановки всех работающих контейнеров:

docker ps -q | xargs docker stop

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