Skip to main content

Ошибка при запуске/перезапуске контейнеров

Описание проблемы:​

При запуске docker-контейнеров со статусом Exited появляется ошибка «Id already in use».

Решение:​

  1. Вывести список процесов с помощью команды:
for i in $(docker ps -a -f status=exited --format '.ID'); do ps aux | grep $i | head -1; done
  1. Остановить процесссы из списка с помощью следующей команды:
for i in $(docker ps -a -f status=exited --format '.ID'); do proc_id=$(ps aux | grep $i | head -1 | awk '{print $2}'); kill $proc_id; done
  1. Удалить каталоги с помощью команды:
for i in $(docker ps -a -f status=exited --format '.ID'); do rm -rf /run/docker/containerd/$i*; done
  1. Проверить имена каталогов, соответствующие ID Exited контейнеров в следующих директориях: /var/run/docker/runtime-runc/moby/ и /run/docker/runtime-runc/moby/.

  2. Повторно выполнить удаление каталогов, заменив путь до конечного каталога, с помощью команды:

for i in $(docker ps -a -f status=exited --format "{{.ID}}"); do rm -rf /var/run/docker/runtime-runc/moby/$i*; done
  1. Запустить Exited контейнеры:
docker ps -a -f status=exited --format '.ID' | xargs --no-run-if-empty docker restart