Как использовать команду docker pull для загрузки образов

DockerDockerBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии (лабораторной работе) вы научитесь использовать команду docker pull для загрузки Docker-образов из реестров. Вы рассмотрите различные методы загрузки образов, включая загрузку определенного образа по его тегу с Docker Hub, загрузку образа с использованием его неизменяемого дайджеста (digest) для гарантированного контроля версий, загрузку всех помеченных образов из репозитория и загрузку образов из реестров, отличных от Docker Hub.

Выполнив эти шаги, вы получите практический опыт по получению Docker-образов, что является фундаментальным навыком для создания и запуска контейнеризованных приложений. Вы научитесь указывать версии образов и источники, обеспечивая надежное получение необходимых вам образов для ваших проектов.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/ImageOperationsGroup -.-> docker/images("List Images") subgraph Lab Skills docker/pull -.-> lab-555159{{"Как использовать команду docker pull для загрузки образов"}} docker/images -.-> lab-555159{{"Как использовать команду docker pull для загрузки образов"}} end

Загрузка определенного образа по тегу с Docker Hub

На этом этапе вы научитесь загружать определенный Docker-образ по его тегу с Docker Hub. Docker Hub - это публичный реестр, в котором хранится множество официальных и созданных сообществом Docker-образов. Загрузка образа означает скачивание его из реестра на вашу локальную машину.

Базовая команда для загрузки образа имеет вид docker pull <image_name>:<tag>. Если вы не укажете тег, Docker по умолчанию загрузит образ с тегом latest. Однако хорошей практикой является указание тега, чтобы гарантировать получение определенной версии образа.

Давайте загрузим образ hello-world с тегом latest. Это очень маленький образ, используемый для проверки правильности установки Docker.

docker pull hello-world:latest

Вы должны увидеть вывод, указывающий, что Docker загружает слои образа.

Using default tag: latest
latest: Pulling from library/hello-world
Digest: sha256:f52335ce493f8f15cfcf46725b2909db9087b688aedabbbd2a167ae30b6da6fc
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest

Теперь давайте загрузим образ ubuntu с определенным тегом, например, 20.04. Это скачает образ Ubuntu 20.04 LTS.

docker pull ubuntu:20.04

Вы увидите аналогичный вывод, показывающий ход загрузки.

20.04: Pulling from library/ubuntu
... (download progress) ...
Status: Downloaded newer image for ubuntu:20.04
docker.io/library/ubuntu:20.04

Чтобы увидеть загруженные вами образы, вы можете использовать команду docker images.

docker images

Эта команда выводит список всех образов, хранящихся на вашей локальной машине, включая их репозиторий, тег, идентификатор образа, время создания и размер.

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
ubuntu        20.04     ...            ...            ...
hello-world   latest    ...            ...            ...

Вы успешно загрузили определенные образы по тегу с Docker Hub.

Загрузка образа по его неизменяемому дайджесту (digest)

На этом этапе вы научитесь загружать Docker-образ с использованием его неизменяемого дайджеста (digest). В то время как теги удобны, они могут быть обновлены для указания на другую версию образа. В то же время дайджест представляет собой уникальный идентификатор для определенной конфигурации слоев образа и его истории. Это более надежный способ гарантировать, что вы загружаете один и тот же образ каждый раз.

Формат команды для загрузки образа по дайджесту имеет вид docker pull <image_name>@<digest>.

Сначала найдем дайджест уже имеющегося у нас образа. Мы можем использовать команду docker images --digests для отображения дайджестов локальных образов.

docker images --digests

Вы должны увидеть вывод, похожий на этот, включая столбец DIGEST:

REPOSITORY    TAG       DIGEST                                                                      IMAGE ID       CREATED        SIZE
ubuntu        20.04     sha256:...   ...            ...
hello-world   latest    sha256:f52335ce493f8f15cfcf46725b2909db9087b688aedabbbd2a167ae30b6da6fc   ...            ...            ...

Возьмем дайджест образа hello-world. Скопируйте полную строку дайджеста (начиная с sha256:).

Теперь попробуем загрузить образ hello-world еще раз, но на этот раз используя его дайджест. Замените <digest> на фактический скопированный вами дайджест.

docker pull hello-world@sha256:f52335ce493f8f15cfcf46725b2909db9087b688aedabbbd2a167ae30b6da6fc

Поскольку вы, вероятно, уже имеете этот слой образа, Docker сообщит, что образ обновлен.

sha256:f52335ce493f8f15cfcf46725b2909db9087b688aedabbbd2a167ae30b6da6fc: Pulling from library/hello-world
Digest: sha256:f52335ce493f8f15cfcf46725b2909db9087b688aedabbbd2a167ae30b6da6fc
Status: Downloaded newer image for hello-world@sha256:f52335ce493f8f15cfcf46725b2909db9087b688aedabbbd2a167ae30b6da6fc
docker.io/library/hello-world@sha256:f52335ce493f8f15cfcf46725b2909db9087b688aedabbbd2a167ae30b6da6fc

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

Вы можете снова проверить имеющиеся образы, используя команду docker images --digests. Вы увидите, что образ hello-world будет перечислен, возможно, с тегом и дайджестом, если вы ранее загружали его по тегу.

docker images --digests

Загрузка всех помеченных (tagged) образов из репозитория

На этом этапе вы научитесь загружать все помеченные (tagged) образы из определенного репозитория на Docker Hub. Это может быть полезно, когда вы хотите скачать несколько версий образа для тестирования или других целей.

Для загрузки всех помеченных образов из репозитория вы можете использовать команду docker pull -a <image_name>. Флаг -a означает "all-tags" (все теги).

Давайте попробуем загрузить все помеченные образы для репозитория alpine. Alpine - это легковесное дистрибутив Linux, часто используемое в контейнерах.

docker pull -a alpine

Эта команда запустит загрузку всех образов в репозитории alpine, которые имеют теги. Вы увидите вывод, показывающий загрузку различных тегов, таких как latest, 3.14, 3.15 и т.д.

Using default tag: latest
latest: Pulling from library/alpine
... (download progress for various tags) ...
Status: Downloaded newer image for alpine:latest
Status: Downloaded newer image for alpine:3.14
Status: Downloaded newer image for alpine:3.15
...
docker.io/library/alpine:latest
docker.io/library/alpine:3.14
docker.io/library/alpine:3.15
...

В зависимости от количества тегов в репозитории выполнение этой команды может занять некоторое время.

После завершения команды вы можете использовать команду docker images, чтобы увидеть все загруженные вами образы alpine.

docker images | grep alpine

Вы увидите список образов alpine с разными тегами.

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
alpine        latest    ...            ...            ...
alpine        3.14      ...            ...            ...
alpine        3.15      ...            ...            ...
...

Этот метод эффективен для загрузки нескольких версий образа из одного репозитория.

Загрузка образа из другого реестра (registry)

На этом этапе вы научитесь загружать Docker-образ из реестра (registry), отличного от Docker Hub. Хотя Docker Hub является реестром по умолчанию, вам может понадобиться загружать образы из частных реестров, реестров облачных провайдеров (например, Google Container Registry, Amazon Elastic Container Registry) или других публичных реестров.

Для загрузки образа из другого реестра вам нужно указать имя хоста реестра перед именем образа. Формат обычно имеет вид <registry_hostname>/<image_name>:<tag> или <registry_hostname>/<user_or_organization>/<image_name>:<tag>.

В этом примере мы загрузим образ из Google Container Registry (GCR). Мы загрузим образ hello-app из проекта google-samples. Имя хоста реестра для GCR - gcr.io.

docker pull gcr.io/google-samples/hello-app:1.0

Эта команда сообщает Docker загрузить образ с именем hello-app с тегом 1.0 из реестра, расположенного по адресу gcr.io в рамках проекта google-samples.

Вы увидите вывод, указывающий на процесс загрузки из указанного реестра.

1.0: Pulling from google-samples/hello-app
... (download progress) ...
Status: Downloaded newer image for gcr.io/google-samples/hello-app:1.0
gcr.io/google-samples/hello-app:1.0

После завершения загрузки вы можете вывести список локальных образов с помощью команды docker images, чтобы увидеть образ, который вы только что загрузили из GCR.

docker images

Вы должны увидеть gcr.io/google-samples/hello-app в списке своих образов.

REPOSITORY                         TAG       IMAGE ID       CREATED        SIZE
gcr.io/google-samples/hello-app    1.0       ...            ...            ...
ubuntu                             20.04     ...            ...            ...
hello-world                        latest    ...            ...            ...
alpine                             latest    ...            ...            ...
alpine                             3.14      ...            ...            ...
alpine                             3.15      ...            ...            ...
...

Это демонстрирует, как загружать образы из реестров, отличных от стандартного Docker Hub, путем указания имени хоста реестра.

Резюме

В этом практическом занятии вы научились использовать команду docker pull для загрузки Docker-образов из реестров (registry). Вы начали с загрузки определенных образов с Docker Hub с использованием их тегов (tags), понимая, что указание тега является важным для получения конкретной версии образа. Вы также узнали, как просматривать локально загруженные образы с помощью команды docker images.

В рамках практического занятия также показано, как загружать образ с использованием его неизменяемого дайджеста (immutable digest), что гарантирует получение именно той же версии образа, независимо от изменений тегов. Вы также рассмотрели загрузку всех помеченных (tagged) образов из репозитория и загрузку образов из реестров, отличных от Docker Hub, расширяя свои возможности по доступу к образам из различных источников.