Описание проблемы:
При запуске 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
2. Остановить процесссы из списка с помощью следующей команды:
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
3. Удалить каталоги с помощью команды:
for i in $(docker ps -a -f status=exited --format '.ID'); do rm -rf /run/docker/containerd/$i*; done
4. Проверить имена каталогов, соответствующие ID Exited контейнеров в следующих директориях: /var/run/docker/runtime-runc/moby/ и /run/docker/runtime-runc/moby/.
5. Повторно выполнить удаление каталогов, заменив путь до конечного каталога, с помощью команды:
for i in $(docker ps -a -f status=exited --format "{{.ID}}"); do rm -rf /var/run/docker/runtime-runc/moby/$i*; done
6. Запустить Exited контейнеры:
docker ps -a -f status=exited --format '.ID' | xargs --no-run-if-empty docker restart