Назад | Перейти на главную страницу

Как очистить сиротские контейнеры Docker?

У меня есть настройка, в которой пользователи входят в хост-машину через PuTTY и могут создавать контейнеры Docker для их использования.

Команда Docker выглядит так:

docker run -it --rm -v /home/$USER:/home/$USER -w="/home/$USER" -u $USER --hostname="$USER-gcc463-docked" precise-gcc4 tmux new -s docker-$USER

Как видите, я использовал --rm, поэтому контейнер теоретически должен удаляться при выходе пользователя, но на практике некоторые пользователи закрывают окно PuTTY, и контейнеры остаются сиротскими.

У вас есть идеи, как я могу сделать так, чтобы контейнеры действительно были удалены в этом случае, или, по крайней мере, как мне найти сиротские контейнеры и очистить их?

Спасибо.

Мое решение заключалось в том, чтобы обернуть запуск докера в скрипт с ловушкой, что-то вроде

trap "if docker ps | grep -c ${CONTAINER_NAME}; then docker stop ${CONTAINER_NAME}; fi" 0 1

docker ps -a поможет вам найти контейнеры, которые не были очищены.