Динамически получить идентификатор образа докера из его имени - PullRequest
0 голосов
/ 07 ноября 2018

Мне нужно динамически удалить все образы докеров на сервере, кроме изображения postgres и контейнера.

Теперь мне нужен динамический способ получить идентификатор этого образа докера, поэтому я буду знать, чтобы избежать его, используя:

docker rmi $(docker images -q | grep -v $<id_of_postgres_container>)

Для части контейнера мне удалось найти это:

docker ps -aqf "name=postgres"

, который возвращает только идентификатор контейнера postgres. Есть ли способ сделать то же самое с изображениями, не углубляясь в bash-скриптинг?

или есть предложения получше?

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

docker rmi никогда не удалит изображение, соответствующее работающему контейнеру. Поэтому, если у вас есть контейнер на основе postgres, и вы хотите удалить все остальные образы в вашей системе, старые заклинания будут делать то, что вы хотите; Я слишком стар для школы docker system, но «получите все идентификаторы изображений, затем попробуйте удалить их все», я знаю, что это

docker images -q | xargs docker rmi

Это напечатает некоторые ошибки, но удалит все изображения, которые он может.

0 голосов
/ 07 ноября 2018
docker images --format="{{.Repository}} {{.ID}}" | 
grep "^postgres " | 
cut -d' ' -f2

Получите изображения докера в формате repository<space>id, затем отфильтруйте строки, начинающиеся с postgres<space>, затем оставьте только идентификатор.

docker images --format="{{.Repository}} {{.ID}}" | 
grep "^postgres " | 
cut -d' ' -f2 | 
xargs docker rmi

Но, если контейнер и изображение postgres в настоящий момент запущены или используются, вы можете просто:

 docker system prune --force --all
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...