docker push

Wysyła obraz lokalny do rejestru.

docker push wysyła zbudowany lokalnie obraz Dockera do rejestru — domyślnie do Docker Hub, ale równie dobrze do GitHub Container Registry, AWS ECR czy prywatnego Harbora. Innymi słowy: budujesz obraz u siebie (docker build), tagujesz go nazwą rejestru, a potem docker push przerzuca poszczególne warstwy na zdalny serwer, żeby kolega, serwer CI albo klaster Kubernetes mógł go pobrać przez docker pull. Bez tego kroku Twój obraz żyje tylko na jednej maszynie i nigdzie nie poleci.

Składnia i najważniejsze opcje

Podstawowa składnia to docker push [OPTIONS] NAME[:TAG]. Jeśli pominiesz :TAG, Docker wyśle tag latest.

  • -a, --all-tags — wysyła wszystkie tagi danego obrazu naraz, nie tylko jeden.
  • -q, --quiet — wycisza gadatliwe paski postępu, zostawia minimum (przydatne w skryptach i logach CI).
  • --platform — wypycha manifest dla konkretnej platformy jako obraz jednoplatformowy, np. linux/amd64 (wymaga API 1.46+).
  • --disable-content-trust — pomija podpisywanie obrazu; domyślnie ustawione na true, więc Docker Content Trust trzeba świadomie włączyć przez zmienną środowiskową.

Przykłady użycia

  • docker push mojaapka:1.0 — wysyła obraz mojaapka w wersji 1.0 do skonfigurowanego rejestru.
  • docker push pawel/mojaapka:latest — publikuje obraz na koncie pawel w Docker Hub.
  • docker push ghcr.io/firma/api:v2.3 — wrzuca obraz do GitHub Container Registry pod konkretny tag.
  • docker push -a pawel/mojaapka — wysyła wszystkie lokalne tagi tego repozytorium za jednym zamachem.
  • docker push --platform linux/arm64 pawel/mojaapka:1.0 — publikuje wariant obrazu pod procesory ARM.

Częste błędy i pułapki

Najczęstszy zgrzyt to denied: requested access to the resource is denied — zwykle brakuje logowania (docker login) albo nazwa nie zawiera Twojego namespace. Drugi klasyk: chcesz wysłać obraz na GHCR czy ECR, ale tag wskazuje na Docker Hub. Pamiętaj — sam push nie tworzy tagu; jeśli Twój obraz nazywa się tylko mojaapka, najpierw zrób docker tag mojaapka pawel/mojaapka:1.0, inaczej Docker będzie celował w nieistniejące repo. Uważaj też z latest: nadpisuje poprzednią wersję bez ostrzeżenia, więc na produkcji zawsze taguj konkretnym numerem. Prywatne repozytoria nie powstają same — na niektórych rejestrach musisz je założyć ręcznie, zanim cokolwiek wyślesz.

Powiązane komendy: docker build, docker tag, docker pull, docker login, docker images.