Я только что обнаружил, что 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
В моей установке Ubuntu 18.04 systemctl stop docker
завершает работу всех запущенных контейнеров. systemctl start docker
снова запускает все контейнеры. Я согласен с BMitch, для диагностики проблемы потребуется дополнительная информация о вашей установке.
Другой способ выключить все работающие контейнеры:
docker ps -q | xargs docker stop
Проблема решена.
] Главное было то, что у меня был дополнительный репозиторий прямо из докера ( 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, но я хотел избежать понижения версии докера путем переключения репо.