Что делает команда docker images
Что проверяют
Базовое владение контейнерами у человека, который пишет сервисы на Python и катит их в докере. Вопрос простой, и валят на нём не знание флагов, а путаницу между образом и контейнером: интервьюер слушает, понимаете ли вы, что образ это неизменяемый набор слоёв, а контейнер это запущенный процесс поверх него.
Как отвечать
Команда печатает список образов, которые лежат локально в хранилище демона: собранные вами и скачанные из реестра. Колонки: репозиторий, тег, идентификатор образа, дата создания и размер. Современный синоним с той же семантикой это docker image ls.
Полезные флаги:
-qтолько идентификаторы, удобно передавать дальше по конвейеру;--no-truncполные идентификаторы вместо укороченных;--filterотбор по условиям, напримерdangling=true,reference,label,before,since;--formatсвой шаблон вывода вместо таблицы.
docker images --filter "dangling=true" -q | xargs -r docker rmiВ питоновском контексте про это спрашивают рядом с размером сборки: после перехода на python:3.12-slim и многоступенчатой сборки разница в колонке размера видна сразу, а безымянные образы с тегом <none> остаются от прошлых сборок и занимают диск.
Где спотыкаются
Складывают колонку размера и делают вывод о занятом месте. Там размер распакованного образа со всеми слоями, и общий базовый слой посчитан у каждого образа отдельно. Реальный расход по диску показывает docker system df.
Путают образы и контейнеры: ищут запущенный сервис в выводе docker images или удивляются ошибке при удалении образа, на котором висит остановленный контейнер. Список контейнеров это docker ps -a.
Считают, что список отражает состояние реестра или прода. Это локальный кэш конкретного демона: на свежем раннере в CI он пуст, а в удалённом контексте команда покажет совсем другой набор.