Команды для работы с Docker-образами

Docker-образ — это шаблон файловой системы и метаданных, из которого Docker запускает контейнеры. В образ уже упакованы приложение, его зависимости, базовая ОС и настройки окружения.

Все основные операции с образами выполняются через подкоманду docker image: с ее помощью можно смотреть список образов, исследовать их содержимое, скачивать из реестра, импортировать из архивов, удалять, тегировать и отправлять в реестр.

Получение списка образов: ls

Команда docker image ls выводит в терминал список скачанных образов следующего вида:

ИЗОБРАЖЕНИЕ

docer_image_ls

В колонке IMAGE отражены названия образов, а колонка ID содержит уникальные идентификаторы образов. Обращаться к образам для операций над ними можно по имени образа или по ID.

Просмотр истории изменений образа: history

docker image history — показать историю изменений образа. Команда отражает историю сборки образа по слоям. Пример просмотра образа docker image history n8nio/n8n:latest:

ИЗОБРАЖЕНИЕ

docker_image_history

Та же информация об образе отражена в Docker Hub (https://hub.docker.com/).

Получение подробной информации об образе: inspect

docker image inspect — показать подробную информацию об одном или нескольких образах. Команда выводит полные метаданные образа в формате JSON: ID, теги, digest, архитектура, OS, переменные окружения (Env), рабочая директория (WORKDIR), команда по умолчанию (CMD + ENTRYPOINT), экспонируемые порты, volumes, labels, автор, дата создания, конфигурация контейнера (StopSignal, User и т.д.), размер и количество слоев:

ИЗОБРАЖЕНИЕ

docker_inspect

Команда полезна, когда нужно понять, как именно образ настроен (какие порты открыты, какие переменные заданы, какая команда запустится), для отладки, CI/CD, security-сканирования и написания docker-compose.

Создание образа из архива: import

docker image import — создать образ из «сырой» файловой системы, упакованной в tar-архив (локальный файл или URL). В отличие от docker image load, который восстанавливает полноценный Docker-образ из заранее сохраненного архива (docker image save), import берет готовый rootfs и превращает его в новый образ без истории сборки.

Команда полезна, когда у вас есть экспортированный rootfs (например, из chroot, LXC, старой системы) и нужно быстро сделать из него Docker-образ, или когда вы получаете файловую систему от стороннего поставщика в tar-архиве, а не полноценный Docker-образ.

Например, так можно импортировать rootfs из URL: docker import https://example.com/exampleimage.tgz. А так — импортировать rootfs из локального архива с именем и тегом: docker import /path/to/rootfs.tar myimage:latest.

Загрузка образа из архива: load

docker image load — загрузить один или несколько образов из tar-архива (бэкап, выгруженный через docker image save) или стандартного ввода (STDIN). В отличие от docker image import, который строит образ из «сырых» данных файловой системы (rootfs, без сохраненной истории сборки), docker image load восстанавливает образ целиком из архива save, включая историю слоев, теги и метаданные, как если бы образ только что был скачан из реестра или собран локально.

Используя команду docker image load -i nginx.tar, можно загрузить образ из файла: при этом будут восстановлены все образы и теги, сохраненные в архиве.

Скачивание образа из реестра: pull

docker image pull — скачать образ из реестра (например, Docker Hub или приватного registry). Если тег не указан, по умолчанию используется latest. Например, docker image pull nginx:latest. Найти нужный образ заранее можно на Docker Hub. Каждый образ на Docker Hub имеет раздел Tags, где перечислены все теги и приведена полная команда для скачивания с учетом нужного тега:

ИЗОБРАЖЕНИЕ

doocker_pull_dh

Сохранение образа в архив: save

docker image save — сохранить один или несколько образов в tar-архив. Например, docker image save nginx:latest -o nginx.tar. Удобно использовать, когда нужно перенести образы на сервер без доступа к реестру (offline-доставка) или сделать резервную копию важных образов перед обновлением или миграцией.

Удаление конкретного образа: rm

docker image rm — удалить один или несколько образов по имени или ID. Например, docker image rm nginx:latest. Команда используется, когда нужно точечно удалить конкретный образ (или несколько), но не трогать остальные:

ИЗОБРАЖЕНИЕ

docker_image_rm

Можно удалить сразу несколько образов, перечислив их через пробел: docker image rm nginx:latest redis:7-alpine myuser/myapp:1.0.0.

Важно: Docker не позволит удалить образ, если на его основе запущены или существуют контейнеры. В таком случае сначала нужно остановить и удалить соответствующие контейнеры (например, через docker rm / docker container rm), а уже потом повторить docker image rm:

ИЗОБРАЖЕНИЕ

docker_image_error

Удаление неиспользуемых образов: prune

docker image prune — удалить все неиспользуемые образы (которые не привязаны ни к одному контейнеру). Например, docker image prune.

Подходит для периодической «генеральной уборки», когда накопилось много старых, неиспользуемых образов. Перед удалением Docker покажет, сколько места будет освобождено, и попросит подтверждение.

Отправка образа в реестр: push

docker image push — отправить образ в реестр (Docker Hub или приватный registry). Например, docker image push myuser/myapp:1.0.0. Здесь myuser/myapp:tag — это логин/namespace и тег образа. Для отправки образа нужно иметь аккаунт и быть залогиненным через docker login -u user_name:

Изображение

docker_login

При аутентификации, в зависимости от настроек безопасности на Docker Hub, Docker может запросить либо пароль от Docker Hub, либо личный токен, который можно посмотреть в разделе Personal access tokens на странице настройки аккаунта Docker Hub.

Создание тега: tag

Тег нужен для того, чтобы добавить имя реестра и namespace перед отправкой образа (push), вести версии образов (:1.0.0, :2024-11-28, :staging) и иметь несколько «алиасов» для одного и того же образа.

Тег создается с помощью команды docker image tag. Например, создать новый тег TARGET_IMAGE[:TAG], который ссылается на уже существующий SOURCE_IMAGE[:TAG] (по сути, «переименовать» или добавить алиас для образа), можно командой docker image tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG].

Пример добавления тега с namespace пользователя перед отправкой на Docker Hub: docker image tag myapp:latest myuser/myapp:latest. А вот так можно подготовить образ к пушу в приватный реестр: docker image tag myapp:1.0.0 registry.example.com/apps/myapp:1.0.0.

Последнее обновление: 25.03.2026