Образы и Docker Hub

Где живут образы, как их скачивать, читать теги версий и удалять лишние.

Тег — метка версии образа после двоеточия, например postgres:16; без тега подразумевается latest.

Список локальных образов

Скачанные образы показывает docker images:

docker images

Вывод:

REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    a72860cb95fd   2 weeks ago    188MB
postgres     16        c5e3b1c5b6f9   3 weeks ago    432MB
hello-world  latest    d2c94e258dcb   8 months ago   13.3kB

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

Команда docker run скачивает образ автоматически, если его нет, но можно скачать заранее:

docker pull postgres:16

Здесь postgres — имя образа, 16 — тег версии. Если тег не указать, Docker возьмёт latest:

# Эти две команды эквивалентны
docker pull nginx
docker pull nginx:latest

Зачем фиксировать тег версии

Тег latest удобен, но коварен: сегодня это одна версия, через месяц — другая, и поведение может измениться. В реальных проектах указывайте конкретный тег (postgres:16, node:22), чтобы сборки были воспроизводимыми.

Docker Hub и официальные образы

Docker Hub — это магазин образов. Особое доверие вызывают официальные образы (Official Images): их сопровождают сами разработчики или Docker. У них короткие имена без префикса автора: nginx, postgres, python, redis. У образов от сообщества имя содержит автора: bitnami/postgresql.

Удаление образов

Ненужный образ удаляют командой docker rmi:

docker rmi hello-world

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

docker image prune

Итог

  • docker images показывает локальные образы, docker pull скачивает их из реестра.
  • Тег после двоеточия фиксирует версию; без него подразумевается latest.
  • Официальные образы Docker Hub имеют короткие имена без автора; в проде фиксируйте версию.
Проверьте себя
1. Что означает тег в имени образа postgres:16?
AНомер порта
BКонкретную версию образа
CКоличество контейнеров
DРазмер образа в гигабайтах
2. Какой тег подразумевается, если его не указать явно?
Astable
Blatest
Cmain
Ddefault
3. Почему в продакшене не стоит полагаться на тег latest?
Alatest работает медленнее остальных
Blatest со временем указывает на разные версии, и сборки перестают быть воспроизводимыми
Clatest нельзя скачать с Docker Hub
Dlatest доступен только платно
Поддержать проект