docker push & docker pull

Тема дорожной карты · Docker & Containers

docker push загружает помеченный образ в registry, а docker pull скачивает его в локальное хранилище. Перед push образ нужно пометить именем registry (docker tag app:1.0 ghcr.io/org/app:1.0) и выполнить docker login. Частые ошибки: push не того тега (например, только latest), забывают, что registry хранит контент по хешу, поэтому повторный push одинаковых слоёв почти бесплатен; лимит anonymous-загрузок на Docker Hub. Продвинутый сценарий — мульти-архитектурные манифесты через docker buildx imagetools и подпись образов с помощью cosign.

Как это работает

docker push & docker pull хранит и раздаёт образы. Docker Hub — дефолтный публичный registry; приватные альтернативы — Harbor (self-hosted, бесплатный), AWS ECR, Google Artifact Registry, GitHub Container Registry (ghcr.io), Yandex Container Registry. Один "registry" хостит много репозиториев; репозиторий держит много тегов + digest для одного логического образа. docker login, docker tag repo/image:tag, docker push — трио для загрузки.

Когда применять

Docker Hub — для OSS-проектов и прототипов; переходите на приватный registry, как только в образах есть проприетарный код, секреты или лицензированные зависимости. Для RF-инфраструктуры практичен Yandex CR + Harbor (rate-лимиты Hub + санкционные риски делают публичный поганым дефолтом). Подписывайте образы через cosign или Notary, когда supply chain важен. Сканирование уязвимостей (Trivy, Grype) — в CI-шаге, который пушит образ.

Типичные ошибки

Ловушки docker push & docker pull: rate-лимиты anonymous Docker Hub в CI (100 pulls/6h на IP — легко превышаются busy-раннером — логиньтесь или используйте mirror); пуш образов с запечёнными секретами и обнаружение через недели (history образа — навсегда); нет garbage collection на self-hosted registry (storage растёт без границ); вера :latest без provenance (подписывайте + проверяйте или pull по digest).

Связанные понятия

Полезные ресурсы