複数のイメージを 1 つの tar アーカイブに保存する
前のステップでは、単一の Docker イメージを保存する方法を学びました。このステップでは、複数の Docker イメージを 1 つの tar アーカイブファイルに保存する方法を学びます。これは、いくつかのイメージを配布またはバックアップ用にまとめる必要がある場合に便利です。
まず、保存するイメージを複数用意するために、別の Docker イメージを取得しましょう。軽量な Linux ディストリビューションである alpine
イメージを取得します。
docker pull alpine
alpine
イメージが取得され、ダウンロードされていることを示す出力が表示されるはずです。
Using default tag: latest
latest: Pulling from library/alpine
...
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest
これで hello-world
と alpine
の両方のイメージがローカルにあります。ローカルのイメージを一覧表示することで、これを確認できます。
docker images
出力には、一覧の中に hello-world
と alpine
の両方が表示されるはずです。
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest ... ... ...
alpine latest ... ... ...
複数のイメージを 1 つの tar アーカイブに保存するには、docker save
コマンドで出力ファイル名の後にイメージ名を列挙するだけです。構文は docker save -o <output_file.tar> <image1_name> <image2_name> ...
です。
hello-world
と alpine
の両方のイメージを、~/project
ディレクトリに images.tar
という名前のファイルに保存します。
docker save -o images.tar hello-world alpine
このコマンドを実行すると、~/project
ディレクトリに images.tar
という名前のファイルが作成されます。このファイルには hello-world
と alpine
の両方の Docker イメージが含まれています。
ls -lh
コマンドを使用して、ファイルが作成されたことを確認し、そのサイズを確認することができます。このファイルには 2 つのイメージが含まれているため、サイズは前のステップの hello-world.tar
ファイルよりも大きくなります。
ls -lh images.tar
次のような出力が表示されるはずです。
-rw-r--r-- 1 labex labex ... images.tar
アーカイブに両方のイメージが含まれていることを確認するには、tar -tf
コマンドを使用して tar ファイルの内容を一覧表示できます。
tar -tf images.tar
出力には、マニフェストやレイヤーデータを含む、両方のイメージに関連するファイルが表示されるはずです。hello-world/
や alpine/
のようなエントリが表示されるはずです。
...
hello-world/
hello-world/manifest.json
...
alpine/
alpine/manifest.json
...
この 1 つの tar ファイルを使用して、docker load
を使って両方のイメージを別のシステムに読み込むことができます。