Docker - не удается удалить мертвый контейнер
Я не могу удалить мертвый контейнер,он появляется снова после перезапуска службы Docker.
docker ps -a
CONTAINER ID STATUS
11667ef16239 Dead
затем
docker rm -f 11667ef16239
затем, когда я запустил docker ps-a, контейнеры docker не отображаются.
docker ps -a
CONTAINER ID STATUS
однако, когда я перезапускаю службу docker:
service docker restart
и снова запустите докер ps-a:
docker ps -a
CONTAINER ID STATUS
11667ef16239 Dead
13 ответов:
скорее всего, произошла ошибка, когда демон попытался очистить контейнер, и теперь он застрял в этом состоянии "зомби".
боюсь, что ваш единственный вариант здесь-вручную очистить его:
$ sudo rm -rf /var/lib/docker/<storage_driver>/11667ef16239.../здесь
<storage_driver>- это имя вашего водителя (aufs,overlay,btrfsилиdevicemapper).
На самом деле все немного изменилось в эти дни, чтобы избавиться от этих мертвых контейнеров, вы можете попытаться размонтировать эти заблокированные файловые системы, чтобы освободить их
Так что если вы получаете сообщение вроде этого
Error response from daemon: Cannot destroy container elated_wozniak: Driver devicemapper failed to remove root filesystem 656cfd09aee399c8ae8c8d3e735fe48d70be6672773616e15579c8de18e2a3b3: Device is Busyпросто запустить этот
umount /var/lib/docker/devicemapper/mnt/656cfd09aee399c8ae8c8d3e735fe48d70be6672773616e15579c8de18e2a3b3и вы можете нормально удалить контейнер после этого
вы также можете удалить
deadконтейнеры с этой командойdocker rm $(docker ps --all -q -f status=dead)но я действительно не уверен, почему и как контейнеры. Эта ошибка кажется связанной https://github.com/typesafehub/mesos-spark-integration-tests/issues/34 всякий раз, когда я получаю
deadтара[обновление] С обновлением Docker 1.13 мы можем легко удалить оба нежелательных контейнера, висящие изображения
$ docker system df #will show used space, similar to the unix tool df $ docker system prune # will remove all unused data.
у меня была следующая ошибка при удалении мертвого контейнера (docker 17.06.1-ce на CentOS 7):
Error response from daemon: driver "overlay" failed to remove root filesystem for <some-id>: remove /var/lib/docker/overlay/<some-id>/merged: device or resource busyвот как я это исправил:
1. проверьте, какие другие процессы также используют ресурсы docker
$ grep docker /proc/*/mountinfo, который выводит что-то вроде этого, где число после
/proc/- этоpid:/proc/10001/mountinfo:179... /proc/10002/mountinfo:149... /proc/12345/mountinfo:159 149 0:36 / /var/lib/docker/overlay/...2. Проверьте имя процесса выше пид
$ ps -p 10001 -o comm= dockerd $ ps -p 10002 -o comm= docker-containe $ ps -p 12345 -o comm= nginx <<<-- This is suspicious!!!и
nginxС pid 12345, кажется, также использует/var/lib/docker/overlay/..., поэтому мы не можем удалить соответствующий контейнер и получитьdevice or resource busyошибка. (См.здесь для обсуждения того, какnginxразделяет то же пространство имен монтирования с контейнерами docker, что предотвращает его удаление.)3. остановка
nginxи тогда я могу успешно удалить контейнер.$ sudo service nginx stop $ docker rm <container-id>
У меня тот же вопрос и оба ответа не помочь.
что помогло мне просто создать каталоги, которые отсутствуют, и удалить их:
mkdir /var/lib/docker/devicemapper/mnt/656cfd09aee399c8ae8c8d3e735fe48d70be6672773616e15579c8de18e2a3b3 mkdir /var/lib/docker/devicemapper/mnt/656cfd09aee399c8ae8c8d3e735fe48d70be6672773616e15579c8de18e2a3b3-init docker rm 656cfd09aee399c8ae8c8d3e735fe48d70be6672773616e15579c8de18e2a3b3
удаление контейнера силой работало на меня.
docker rm -f <id_of_the_dead_container>Примечания:
имейте в виду, что эта команда может вызвать эту ошибку
Error response from daemon: Driver devicemapper failed to remove root filesystem <id_of_the_dead_container>: Device is Busyкрепление вашего мертвого контейнера устройства mapper должны быть удалены, несмотря на это сообщение. То есть вы больше не получите доступ к этому пути:
/var/lib/docker/devicemapper/mnt/<id_of_the_dead_container>
grep 656cfd09aee399c8ae8c8d3e735fe48d70be6672773616e15579c8de18e2a3b3 /proc/*/mountinfoзатем найти пид
656cfd09aee399c8ae8c8d3e735fe48d70be6672773616e15579c8de18e2a3b3andи убить его
Я пробовал предложения выше, но не работает.
затем
- Я :
docker system prune -a, Это не сработало в первый раз- Я перезагружаю систему
- Я попробую еще раз
docker system prune -a. На этот раз он работает. Он отправит предупреждающее сообщение и в конце спросит: "Вы уверены, что хотите продолжить? y / n? . Ответ: да . Это будет время от времени, и в конце концов мертвые контейнеры исчезли.- проверить с помощью
docker ps -a
попробуйте выполнить следующие команды. Это всегда работает на меня.
# docker volume rm $(docker volume ls -qf dangling=true) # docker rm $(docker ps -q -f 'status=exited')после выполнения указанных выше команд, перезапустить настройки,
# service docker restart
запуск на Centos7 & Docker 1.8.2, я не смог использовать решение Zgr3doo для umount by devicemapper (я думаю, что ответ, который я получил, заключался в том, что Том не был смонтирован/найден. )
Я думаю, что у меня также была аналогичная вещь с ответом sk8terboi87 ツ: я считаю, что сообщение состояло в том, что Тома не могут быть размонтированы, и в нем перечислены конкретные тома, которые он пытался размонтировать, чтобы удалить мертвые контейнеры.
то, что действительно работало для меня, останавливало докера сначала, а затем удаление каталогов вручную. Я смог определить, какие из них были по ошибке вывода предыдущей команды, чтобы удалить все мертвые контейнеры.
извиняюсь за расплывчатое описание. Я нашел этот вопрос через несколько дней после того, как я обработал мертвые контейнеры. .. Однако сегодня я заметил похожую картину:
$ sudo docker stop fervent_fermi; sudo docker rm fervent_fermi fervent_fermi Error response from daemon: Cannot destroy container fervent_fermi: Driver devicemapper failed to remove root filesystem a11bae452da3dd776354aae311da5be5ff70ac9ebf33d33b66a24c62c3ec7f35: Device is Busy Error: failed to remove containers: [fervent_fermi] $ sudo systemctl docker stop $ sudo rm -rf /var/lib/docker/devicemapper/mnt/a11bae452da3dd776354aae311da5be5ff70ac9ebf33d33b66a24c62c3ec7f35 $Я заметил, что при использовании этого подхода докер воссоздал изображения с разными имена:
a11bae452da3 trend_av_docker "bash" 2 weeks ago Dead compassionate_ardinghelliвозможно, это было связано с тем, что контейнер был выпущен с restart=always, однако идентификатор контейнера совпадает с идентификатором контейнера, который ранее использовал том, который я принудительно удалил. Не было никаких трудностей с удалением этого нового контейнера:
$ sudo docker rm -v compassionate_ardinghelli compassionate_ardinghelli
пробовал все вышеперечисленное (за исключением Reboot/ restart docker).
Итак, вот ошибка om docker rm:
$ docker rm 08d51aad0e74 Error response from daemon: driver "devicemapper" failed to remove root filesystem for 08d51aad0e74060f54bba36268386fe991eff74570e7ee29b7c4d74047d809aa: remove /var/lib/docker/devicemapper/mnt/670cdbd30a3627ae4801044d32a423284b540c5057002dd010186c69b6cc7eea: device or resource busyзатем я сделал следующее:
$ grep docker /proc/*/mountinfo | grep 958722d105f8586978361409c9d70aff17c0af3a1970cb3c2fb7908fe5a310ac /proc/20416/mountinfo:629 574 253:15 / /var/lib/docker/devicemapper/mnt/958722d105f8586978361409c9d70aff17c0af3a1970cb3c2fb7908fe5a310ac rw,relatime shared:288 - xfs /dev/mapper/docker-253:5-786536-958722d105f8586978361409c9d70aff17c0af3a1970cb3c2fb7908fe5a310ac rw,nouuid,attr2,inode64,logbsize=64k,sunit=128,swidth=128,noquotaЭто должно быть PID оскорбительного процесса, который держит его занятым-20416 (элемент после /proc/
Так что я сделал ps-p и к моему удивлению найти:
[devops@dp01app5030 SeGrid]$ ps -p 20416 PID TTY TIME CMD 20416 ? 00:00:19 ntpdнастоящий момент WTF. Поэтому я решил проблему пары с Google и нашел это: Затем нашел это https://github.com/docker/for-linux/issues/124
оказывается, мне пришлось перезапустить демон ntp, и это исправило проблему!!!
попробуйте это он работал для меня на centos 1) докер контейнер ls-a дает вам список контейнеров проверить статус, который вы хотите избавиться
2) докер контейнер rm-f 97af2da41b2b не большой флаг силы вентилятора, но делает работу чтобы проверить, что это сработало, просто запустите команду снова или Перечислите ее.
3) продолжайте, пока мы не очистим все мертвые контейнеры



Comments