Пошук уроків, статей та іншого контенту
Створюйте теги для образів і публікуйте їх у реєстрі за допомогою команди docker push.
Тег — це читабельне ім’я, яке вказує на конкретний Docker-образ. Зазвичай він має формат:
[registry[:port]/][namespace/]repository[:tag]Приклади:
nginx:1.27
myuser/web-app:1.0.0
ghcr.io/company/web-app:production
registry.example.com:5000/team/api:2026-09-02Якщо реєстр і тег не вказані явно:
nginx трактують як docker.io/library/nginx:latest;
myuser/web-app трактують як docker.io/myuser/web-app:latest;
тег latest додається за замовчуванням.
Тег є локальним посиланням на образ. Команда docker tag не створює новий образ і не копіює його — вона створює ще одне ім’я для вже наявного образу.
Спочатку перегляньте локальні образи:
docker image lsПриклад результату:
REPOSITORY TAG IMAGE ID CREATED SIZE
web-app latest 7f3a1c2d4e5f 2 minutes ago 180MBЩоб створити тег для цього образу, використайте:
docker tag web-app:latest myuser/web-app:1.0.0Тепер один і той самий образ має два імені:
docker image ls web-app
docker image ls myuser/web-appМожна перевірити, що обидва теги посилаються на однаковий IMAGE ID:
REPOSITORY TAG IMAGE ID CREATED SIZE
web-app latest 7f3a1c2d4e5f 2 minutes ago 180MB
myuser/web-app 1.0.0 7f3a1c2d4e5f 2 minutes ago 180MBДля версій образу часто використовують:
семантичну версію: 1.4.2;
основну та другорядну версію: 1.4;
назву середовища: staging, production;
ідентифікатор коміту: a1b2c3d;
дату або номер збірки: 2026-09-02, build-142.
Наприклад:
docker tag web-app:latest myuser/web-app:1.4.2
docker tag web-app:latest myuser/web-app:1.4
docker tag web-app:latest myuser/web-app:productionТеги 1.4.2 і 1.4 можуть бути різними посиланнями на один образ у момент створення. Під час наступних збірок тег можна перемістити на інший образ.
Для відтворюваних розгортань краще використовувати конкретні версійні теги, а не покладатися лише на latest.
Перед публікацією образ потрібно позначити повним іменем, яке містить назву реєстру та простору імен.
Для Docker Hub формат зазвичай такий:
DOCKER_HUB_USERNAME/IMAGE_NAME:TAGНаприклад:
docker tag web-app:latest myuser/web-app:1.0.0Для приватного реєстру:
docker tag web-app:latest registry.example.com/team/web-app:1.0.0Якщо реєстр працює на нестандартному порту:
docker tag web-app:latest registry.example.com:5000/team/web-app:1.0.0Назва образу, яку використовують у docker push, повинна збігатися з назвою, яку вказано під час docker tag.
Перед push виконайте вхід до реєстру:
docker loginДля Docker Hub Docker попросить ім’я користувача та пароль або токен.
Для іншого реєстру вкажіть його адресу:
docker login registry.example.comДля реєстру на нестандартному порту:
docker login registry.example.com:5000Після успішного входу Docker зберігає облікові дані у конфігурації клієнта. Не передавайте пароль безпосередньо в командному рядку, оскільки він може потрапити до історії shell або списку процесів.
docker pushПісля створення тегу та авторизації опублікуйте образ:
docker push myuser/web-app:1.0.0Docker перевірить шари образу та завантажить до реєстру лише ті, яких там ще немає. Тому повторний push часто виконується швидше.
Приклад типової відповіді:
The push refers to repository [docker.io/myuser/web-app]
a1b2c3d4e5f6: Pushed
f6e5d4c3b2a1: Layer already exists
1.0.0: digest: sha256:... size: 1573Повний тег образу в цьому прикладі:
docker.io/myuser/web-app:1.0.0Якщо реєстр не вказано, Docker використовує Docker Hub.
Нижче наведено послідовність команд для локального образу. Для виконання потрібен обліковий запис у реєстрі та дозвіл на публікацію образів у просторі імен myuser.
# Збираємо локальний образ із Dockerfile у поточному каталозі
docker build -t web-app:latest .
# Перевіряємо локальний образ
docker image ls web-app
# Створюємо тег із назвою репозиторію в Docker Hub
docker tag web-app:latest myuser/web-app:1.0.0
# Авторизуємося в Docker Hub
docker login
# Публікуємо образ у реєстрі
docker push myuser/web-app:1.0.0
# За потреби додаємо тег production і публікуємо його окремо
docker tag web-app:latest myuser/web-app:production
docker push myuser/web-app:productionЗамість myuser потрібно використати власне ім’я користувача або назву організації.
Після push образ можна отримати на іншій машині:
docker pull myuser/web-app:1.0.0Запустити завантажений образ:
docker run --rm myuser/web-app:1.0.0Команда docker pull завантажує образ за конкретним тегом. Якщо тег не вказати, Docker використає latest:
docker pull myuser/web-appДля перевірки локальних тегів:
docker image ls myuser/web-appdocker tag може отримувати як джерело не лише ім’я, а й ідентифікатор образу:
docker image ls
docker tag 7f3a1c2d4e5f myuser/web-app:1.0.0Однак для робочих сценаріїв зручніше використовувати зрозуміле ім’я джерела, наприклад:
docker tag web-app:latest myuser/web-app:1.0.0Для приватного реєстру послідовність така сама, але повне ім’я містить адресу реєстру:
docker build -t web-app:latest .
docker tag web-app:latest registry.example.com/team/web-app:1.0.0
docker login registry.example.com
docker push registry.example.com/team/web-app:1.0.0Якщо під час push Docker повідомляє про відсутність дозволу, перевірте:
чи виконано docker login для правильного реєстру;
чи має обліковий запис дозвіл на запис у потрібний репозиторій;
чи правильно вказано простір імен team;
чи існує такий репозиторій у реєстрі або чи дозволено його автоматичне створення.
Реєстр повертає digest після успішної публікації:
sha256:1f2e3d4c...Тег є змінним посиланням: у майбутньому його можна повторно призначити іншому образу. Digest ідентифікує конкретний вміст образу.
Отримати digest локального образу можна так:
docker image inspect myuser/web-app:1.0.0Для розгортань, де потрібно точно зафіксувати вміст, можна використовувати посилання з digest:
myuser/web-app@sha256:1f2e3d4c...Образ має локальний тег:
web-app:latestА команда публікації використовує інше ім’я:
docker push myuser/web-app:latestУ такому випадку Docker може повідомити, що локального образу з таким тегом не знайдено. Спочатку створіть потрібний тег:
docker tag web-app:latest myuser/web-app:latest
docker push myuser/web-app:latestКоманда:
docker tag web-app:latest web-app:1.0.0не створює тег для облікового запису Docker Hub. Для публікації в особистий репозиторій потрібно вказати ім’я користувача:
docker tag web-app:latest myuser/web-app:1.0.0Образ із тегом:
myuser/web-app:1.0.0буде спрямовано до Docker Hub. Для приватного реєстру потрібно явно додати його адресу:
docker tag web-app:latest registry.example.com/team/web-app:1.0.0Помилки unauthorized, denied або requested access to the resource is denied зазвичай означають, що:
користувач не увійшов до реєстру;
виконано вхід до іншого реєстру;
немає дозволу на запис;
назва репозиторію не належить цьому користувачу або організації.
Виконайте вхід до потрібного реєстру та перевірте повне ім’я образу:
docker login
docker push myuser/web-app:1.0.0latestТег latest не гарантує, що це найновіша версія, і може бути переміщений на інший образ. Для кожної версії створюйте окремий тег:
docker tag web-app:latest myuser/web-app:1.0.0
docker push myuser/web-app:1.0.0За потреби тегуйте цей самий образ як latest окремо:
docker tag web-app:latest myuser/web-app:latest
docker push myuser/web-app:latestdocker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG] створює нове ім’я для локального образу.
Для публікації тег має містити адресу реєстру та простір імен, якщо вони потрібні.
docker login авторизує Docker-клієнт у реєстрі.
docker push IMAGE[:TAG] завантажує образ до реєстру.
Повторно завантажуються лише відсутні шари.
Для версій краще використовувати конкретні теги, наприклад 1.0.0, а не лише latest.
Тег можна змінити, а digest однозначно ідентифікує конкретний вміст образу.