docker image load コマンドでイメージを読み込む方法

DockerDockerBeginner
今すぐ練習

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

はじめに

この実験では、docker loadコマンドを使用してアーカイブから Docker イメージを読み込む方法を学びます。これは Docker レジストリに依存せずにマシン間でイメージを転送するための重要なスキルです。まずdocker saveを使用して Docker イメージアーカイブを準備します。

準備が完了したら、さまざまな方法でイメージを読み込む方法を探ります。これには標準入力(STDIN)からのイメージの読み込み、--inputフラグを使用したファイルからの読み込み、および--platformフラグを使用した特定のプラットフォームバリアントの読み込みが含まれます。これらの手順を完了することで、オフラインでの 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/rmi("Remove Image") docker/ImageOperationsGroup -.-> docker/images("List Images") docker/ImageOperationsGroup -.-> docker/save("Save Image") docker/ImageOperationsGroup -.-> docker/load("Load Image") subgraph Lab Skills docker/pull -.-> lab-555156{{"docker image load コマンドでイメージを読み込む方法"}} docker/rmi -.-> lab-555156{{"docker image load コマンドでイメージを読み込む方法"}} docker/images -.-> lab-555156{{"docker image load コマンドでイメージを読み込む方法"}} docker/save -.-> lab-555156{{"docker image load コマンドでイメージを読み込む方法"}} docker/load -.-> lab-555156{{"docker image load コマンドでイメージを読み込む方法"}} end

Docker イメージアーカイブの準備

このステップでは、Docker イメージアーカイブを準備する方法を学びます。これは Docker レジストリに依存せずに異なるマシン間で Docker イメージを転送する際に有用です。既存の Docker イメージからアーカイブを作成するためにdocker saveコマンドを使用します。

まず、このデモンストレーションで使用するシンプルな Docker イメージをプルします。hello-worldイメージを使用します。

docker pull hello-world

イメージがプルされ、非常に小さいイメージであることを示す出力が表示されるはずです。

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

hello-worldイメージを取得したので、これを tar アーカイブファイルに保存します。~/projectディレクトリにhello-world.tarという名前で保存します。

docker save -o ~/project/hello-world.tar hello-world

-oフラグは出力ファイルのパスを指定します。このコマンドはhello-worldイメージを指定したファイルに保存します。コマンドが成功すると、出力は表示されません。

アーカイブファイルが作成されたことを確認するために、~/projectディレクトリのファイルを一覧表示できます。

ls ~/project

ファイルの中にhello-world.tarが表示されるはずです。

hello-world.tar

このhello-world.tarファイルには、hello-worldイメージの Docker イメージデータが含まれています。このファイルを別のマシンに転送し、次のステップで説明するdocker loadコマンドを使用してイメージを読み込むことができます。

STDIN からの Docker イメージの読み込み

このステップでは、標準入力 (STDIN) から Docker イメージを読み込む方法を学びます。これはイメージアーカイブを読み込む別の方法で、特にdocker saveの出力を直接docker loadにパイプする場合に有用です。

まず、前のステップでプルして保存したhello-worldイメージを削除します。これにより、アーカイブからイメージを読み込んでいることを確認し、既存のイメージを使用していないことを保証します。

docker rmi hello-world

イメージが削除されたことを示す出力が表示されるはずです。

Untagged: hello-world:latest
Deleted: sha256:...

次に、catコマンドを使用してhello-world.tarファイルの内容を標準出力に出力し、その出力をdocker loadコマンドにパイプします。

cat ~/project/hello-world.tar | docker load

--inputフラグなしで使用したdocker loadコマンドは、STDIN からイメージアーカイブを読み込みます。イメージレイヤーが読み込まれていることを示す出力が表示されるはずです。

...
Loaded image: hello-world:latest

イメージが正常に読み込まれたことを確認するために、利用可能な Docker イメージを一覧表示できます。

docker images

出力にhello-worldイメージが表示されるはずです。

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

これにより、アーカイブファイルを STDIN にパイプして Docker イメージを読み込む方法が実証されました。

--input フラグを使用したファイルからの Docker イメージ読み込み

このステップでは、docker loadコマンドで--inputフラグを使用してファイルから Docker イメージを読み込む方法を学びます。これはファイルからイメージアーカイブを読み込む最も一般的な方法です。

まず、再度hello-worldイメージを削除し、アーカイブファイルから読み込んでいることを確認します。

docker rmi hello-world

イメージが削除されたことを確認する出力が表示されるはずです。

Untagged: hello-world:latest
Deleted: sha256:...

次に、最初のステップで作成したhello-world.tarファイルのパスを指定するために、--inputフラグ付きのdocker loadコマンドを使用します。

docker load --input ~/project/hello-world.tar

--inputフラグは、docker loadに STDIN ではなく指定されたファイルからイメージアーカイブを読み取るように指示します。STDIN から読み込んだ場合と同様に、レイヤーが読み込まれていることを示す出力が表示されるはずです。

...
Loaded image: hello-world:latest

イメージが読み込まれたことを確認するために、再度 Docker イメージを一覧表示します。

docker images

hello-worldイメージがリストに表示されるはずです。

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

この方法は、イメージアーカイブがファイルとして保存されている場合に一般的に推奨されます。ファイルの内容を STDIN にパイプする方法よりも明示的だからです。

--platform フラグを使用した特定プラットフォームバリアントの読み込み

このステップでは、--platformフラグを使用して Docker イメージアーカイブから特定プラットフォームバリアントを読み込む方法を説明します。これはイメージアーカイブが複数のアーキテクチャ(例:linux/amd64linux/arm64)向けのバリアントを含んでいる場合に特に有用です。

まず、再度hello-worldイメージを削除して初期状態に戻します。

docker rmi hello-world

イメージが削除されたことを確認する出力が表示されるはずです。

Untagged: hello-world:latest
Deleted: sha256:...

次に、docker loadコマンドで--inputフラグを使用してアーカイブファイルを指定し、--platformフラグで目的のプラットフォームを指定します。この例では、LabEx VM のアーキテクチャであるlinux/amd64を指定します。

docker load --input ~/project/hello-world.tar --platform linux/amd64

--platformフラグは、Docker が指定されたアーキテクチャとオペレーティングシステムに一致するイメージバリアントのみを読み込むことを保証します。hello-worldイメージは非常にシンプルで、アーカイブ内に大きなプラットフォーム差異がない可能性が高いですが、このフラグの使用方法を示しています。レイヤーが読み込まれていることを示す出力が表示されるはずです。

...
Loaded image: hello-world:latest

イメージが読み込まれたことを確認するために、Docker イメージを一覧表示します。

docker images

hello-worldイメージがリストに表示されるはずです。

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

マルチアーキテクチャイメージアーカイブを扱う際に--platformフラグを使用することは、環境に適した正しいバリアントを読み込むために重要です。

まとめ

この実験では、レジストリを使用せずに Docker イメージを転送する際に必須となるdocker saveコマンドを使用して Docker イメージアーカイブを準備する方法を学びました。hello-worldイメージを tar ファイルに保存することに成功しました。

次に、docker loadコマンドを使用してアーカイブから Docker イメージを読み込むさまざまな方法を検討しました。パイプ操作に便利な標準入力(STDIN)からのイメージ読み込み方法と、--inputフラグを使用してファイルから直接イメージを読み込む方法を学びました。最後に、--platformフラグを使用してアーカイブから特定のプラットフォームバリアントを読み込む方法を発見し、マルチプラットフォームイメージを管理するためのdocker loadコマンドの柔軟性を実証しました。