docker image pull コマンドを使ってイメージをダウンロードする方法

DockerDockerBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、docker pull コマンドを使用してレジストリから Docker イメージをダウンロードする方法を学びます。Docker Hub からタグ付きの特定のイメージを取得する方法、バージョン管理を保証するために不変のダイジェストを使用してイメージを取得する方法、リポジトリからすべてのタグ付きイメージを取得する方法、および 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 image pull コマンドを使ってイメージをダウンロードする方法"}} docker/images -.-> lab-555159{{"docker image pull コマンドを使ってイメージをダウンロードする方法"}} end

Docker Hub からタグ付きの特定のイメージを取得する

このステップでは、Docker Hub からタグ付きの特定の Docker イメージを取得する方法を学びます。Docker Hub は、多くの公式およびコミュニティ貢献の Docker イメージをホストする公開レジストリです。イメージを取得するとは、レジストリからローカルマシンにダウンロードすることを意味します。

イメージを取得する基本的なコマンドは docker pull <image_name>:<tag> です。タグを指定しない場合、Docker はデフォルトで latest タグのイメージを取得します。ただし、特定のバージョンのイメージを確実に取得するためには、タグを指定することが推奨されます。

latest タグの hello-world イメージを取得してみましょう。これは、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

次に、特定のタグ(例えば 20.04)の ubuntu イメージを取得しましょう。これにより、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

このコマンドは、ローカルマシンに保存されているすべてのイメージを、リポジトリ、タグ、イメージ ID、作成時間、およびサイズとともに一覧表示します。

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

これで、Docker Hub からタグ付きの特定のイメージを正常に取得できました。

不変のダイジェストを使用してイメージを取得する

このステップでは、不変のダイジェストを使用して Docker イメージを取得する方法を学びます。タグは便利ですが、異なるイメージバージョンを指すように更新される可能性があります。一方、ダイジェストは、特定のイメージレイヤー構成とその履歴の一意の識別子です。これは、毎回まったく同じイメージを取得するためのより信頼性の高い方法です。

ダイジェストを使用してイメージを取得する形式は 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

リポジトリからすべてのタグ付きイメージを取得する

このステップでは、Docker Hub 上の特定のリポジトリからすべてのタグ付きイメージを取得する方法を学びます。テストやその他の目的でイメージの複数バージョンをダウンロードする場合に便利です。

リポジトリからすべてのタグ付きイメージを取得するには、docker pull -a <image_name> コマンドを使用できます。-a フラグは「すべてのタグ」を意味します。

alpine リポジトリのすべてのタグ付きイメージを取得してみましょう。Alpine はコンテナでよく使用される軽量 Linux ディストリビューションです。

docker pull -a alpine

このコマンドは、alpine リポジトリ内のすべてのタグ付きイメージのダウンロードを開始します。latest3.143.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      ...            ...            ...
...

この方法は、単一のリポジトリからイメージの複数バージョンをダウンロードするのに効率的です。

別のレジストリからイメージを取得する

このステップでは、Docker Hub 以外のレジストリから Docker イメージを取得する方法を学びます。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) からイメージを取得します。google-samples プロジェクトから hello-app イメージを取得します。GCR のレジストリホスト名は gcr.io です。

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

このコマンドは、Docker に対して gcr.iogoogle-samples プロジェクト内のレジストリから、タグが 1.0hello-app イメージを取得するよう指示します。

指定したレジストリからのダウンロードプロセスを示す出力が表示されます。

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 イメージをダウンロードする方法を学びました。まず、Docker Hub からタグを指定して特定のイメージを取得し、特定のバージョンを取得するためにタグを指定することが重要であることを理解しました。また、docker images コマンドを使用してローカルにダウンロードしたイメージを表示する方法も学びました。

この実験ではさらに、不変のダイジェストを使用してイメージを取得する方法を示し、タグが変更されても正確に同じイメージバージョンを取得できることを確認しました。また、リポジトリからすべてのタグ付きイメージを取得する方法や、Docker Hub 以外のレジストリからイメージを取得する方法を調べ、様々なソースからイメージにアクセスする能力を拡張しました。