docker push în Docker

Imagini Docker 1.0+

Trimite o imagine locală într-un registry (Docker Hub, GHCR, registry privat).

Sintaxă comandă
docker push [opțiuni] nume[:etichetă]

Ce face docker push

Comanda docker push încarcă o imagine locală într-un registry, de unde poate fi descărcată cu docker pull pe alte mașini. Registry-ul de destinație este stabilit de numele imaginii, deci de obicei imaginea trebuie mai întâi etichetată corect cu docker tag.

Ca și la descărcare, se trimit doar straturile pe care registry-ul nu le are deja. Straturile imaginii de bază (de exemplu python:3.12-slim) apar ca Mounted from library/python sau Layer already exists.

Pentru a publica ai nevoie de drepturi de scriere: autentifică-te mai întâi cu docker login.

Opțiuni și argumente

Opțiune / Parametru Descriere
nume:etichetă Imaginea de trimis; numele trebuie să includă namespace-ul și, opțional, registry-ul.
-a, --all-tags Trimite toate etichetele locale ale depozitului.
-q, --quiet Suprimă afișarea progresului.
--platform Trimite doar varianta pentru platforma indicată (Docker 27+, cu containerd image store).

Exemple

Exemplul 1: Publicarea unei versiuni pe Docker Hub

După docker login și docker tag, imaginea este încărcată.

docker push dexblog/api:2.3.1

Ieșire în terminal

The push refers to repository [docker.io/dexblog/api]
8b7a1f2e3d4c: Pushed
6c5d4e3f2a1b: Pushed
1f2e3d4c5b6a: Pushed
a3b2c1d0e9f8: Mounted from library/python
d4e5f6a7b8c9: Mounted from library/python
f0e1d2c3b4a5: Layer already exists
2.3.1: digest: sha256:7e1c5b9a3d2f8e4c6a0b1d3f5e7c9a2b4d6f8e0c1a3b5d7f9e1c3a5b7d9f1e3c size: 1784

Exemplul 2: Toate etichetele deodată

Trimite atât 2.3.1, cât și latest, dacă ambele există local.

docker push --all-tags dexblog/api

Greșeli frecvente

  • Eroarea denied: requested access to the resource is denied: nu ești autentificat, namespace-ul nu îți aparține sau imaginea nu are prefixul contului tău.
  • Publicarea accidentală a secretelor (fișiere .env, chei SSH) copiate în imagine. Verifică .dockerignore înainte de push, mai ales pentru depozite publice.

Comenzi înrudite

  • docker tag: Adaugă un nume nou (etichetă) unei imagini existente, fără a o copia.
  • docker login: Autentifică clientul Docker la Docker Hub sau la un alt registry privat de imagini.
  • docker pull: Descarcă o imagine (sau o anumită etichetă a ei) dintr-un registry, implicit Docker Hub.
  • docker build: Construiește o imagine pe baza unui Dockerfile și a unui context de build.