はじめに
このチュートリアルでは、終了した Docker イメージを保存およびエクスポートする手順を案内します。終了した Docker イメージを識別およびリストし、ファイルに保存し、その後保存されたイメージをインポートおよびロードする方法を学習します。この知識は、Docker イメージ管理ワークフローを最適化し、Docker 環境を効率的に管理するのに役立ちます。
このチュートリアルでは、終了した Docker イメージを保存およびエクスポートする手順を案内します。終了した Docker イメージを識別およびリストし、ファイルに保存し、その後保存されたイメージをインポートおよびロードする方法を学習します。この知識は、Docker イメージ管理ワークフローを最適化し、Docker 環境を効率的に管理するのに役立ちます。
Docker は、開発者がアプリケーションとその依存関係を軽量で移植性があり、自己完結的な単位である Docker イメージにパッケージ化できる人気のコンテナ化プラットフォームです。これらのイメージは、Docker がインストールされているシステムであれば、基盤となるオペレーティングシステムやハードウェアに関係なく、簡単に共有、デプロイ、実行できます。
Docker イメージは Docker エコシステムの基盤であり、その構造と管理を理解することは、Docker を効果的に扱うために不可欠です。Docker イメージは本質的に、特定のアプリケーションまたはサービスを実行するために必要なファイル、ライブラリ、および依存関係を含む読み取り専用テンプレートです。
Docker コンテナを実行するときは、Docker イメージに基づいています。コンテナはイメージのすべてのプロパティと設定を継承し、一貫性があり再現可能な実行環境を保証します。これにより、開発環境から本番環境まで、さまざまな環境でアプリケーションをデプロイおよびスケールアップすることが容易になります。
Docker イメージを作成するには、Dockerfile を使用できます。Dockerfile は、イメージを構築するための手順を定義するテキストベースのスクリプトです。Dockerfile は、ベースイメージを指定し、必要なソフトウェアをインストールし、アプリケーションコードをコピーし、実行環境を設定します。
FROM ubuntu:22.04
RUN apt-get update && apt-get install -y nginx
COPY index.html /usr/share/nginx/html/
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
Docker イメージが構築されると、Docker Hub やプライベートレジストリなどの Docker レジストリを通じて共有および配布できます。これにより、開発者やチームは協力し、既存のイメージを再利用できるため、さまざまな環境での効率性と一貫性を向上させることができます。
Docker を使用する場合、終了した Docker イメージ(システムから停止または削除されたイメージ)に出会うことは一般的です。これらの終了したイメージは、貴重なディスク容量を消費し、クリーンで効率的な Docker 環境を維持するために管理または削除する必要がある場合があります。
終了した Docker イメージを識別およびリスト表示するには、次の Docker コマンドを使用できます。
docker ps -a コマンドを使用して、終了したコンテナを含むすべての Docker コンテナをリスト表示できます。これにより、各コンテナのコンテナ ID、イメージ名、およびステータスが表示されます。
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a1b2c3d4e5f6 nginx:latest "nginx -g 'daemon off" 10 minutes ago Exited (0) 5 minutes ago my-nginx-container
上記の例では、my-nginx-container が終了しています。
終了した Docker イメージをリスト表示するには、docker images コマンドに --filter オプションを使用できます。
$ docker images --filter "dangling=true"
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> a1b2c3d4e5f6 10 minutes ago 133MB
これにより、実行中のコンテナに関連付けられていない終了した Docker イメージがすべて表示されます。
あるいは、docker image ls コマンドに --filter オプションを使用しても同じ結果を得られます。
$ docker image ls --filter "dangling=true"
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> a1b2c3d4e5f6 10 minutes ago 133MB
--filter "dangling=true" オプションは、出力に現在実行中のコンテナに関連付けられていない終了した Docker イメージのみを表示するようにフィルタリングします。
終了した Docker イメージを識別およびリスト表示することで、必要に応じて保存、エクスポート、または削除して、クリーンで効率的な Docker 環境を維持できます。
終了した Docker イメージを識別およびリスト表示した後、バックアップ、配布、または将来の使用のために、それらをファイルに保存したい場合があります。docker save コマンドを使用すると、1 つ以上の Docker イメージを圧縮された tar アーカイブファイルに保存できます。
単一の終了した Docker イメージをファイルに保存するには、次のコマンドを使用します。
$ docker save -o my-image.tar <image-name>
<image-name> を保存する終了した Docker イメージの名前または ID に置き換えます。
たとえば、nginx:latest イメージを my-nginx-image.tar というファイルに保存するには、次のコマンドを使用します。
$ docker save -o my-nginx-image.tar nginx:latest
保存する終了した Docker イメージが複数ある場合は、イメージ名または ID のスペース区切りのリストを指定できます。
$ docker save -o my-images.tar <image1-name> <image2-name> <image3-name>
これにより、指定されたすべてのイメージが my-images.tar ファイルに保存されます。
保存されたイメージファイルの内容を検証するには、tar アーカイブ内のファイルをリスト表示します。
$ tar tf my-image.tar
これにより、my-image.tar ファイルの内容が表示され、保存された Docker イメージのレイヤーとメタデータが表示されます。
終了した Docker イメージをファイルに保存することで、必要に応じてこれらのイメージをアーカイブ、配布、または復元し、Docker 環境が整理され、効率的であることを保証できます。
終了した Docker イメージをファイルに保存する以外にも、docker export コマンドを使用して圧縮アーカイブとしてエクスポートすることもできます。このプロセスは、終了したコンテナの完全なファイルシステムを含む単一のファイルを作成します。これは、コンテナの状態を共有または復元するために役立ちます。
単一の終了した Docker コンテナをアーカイブとしてエクスポートするには、次のコマンドを使用します。
$ docker export -o my-container.tar <container-id>
<container-id> をエクスポートする終了した Docker コンテナの ID または名前で置き換えます。
たとえば、my-nginx-container を my-nginx-container.tar というアーカイブファイルとしてエクスポートするには、次のコマンドを使用します。
$ docker export -o my-nginx-container.tar my-nginx-container
エクスポートする終了した Docker コンテナが複数ある場合は、ループを使用してプロセスを自動化できます。
$ for container in $(docker ps -a -q --filter "status=exited"); do
docker export -o "${container}.tar" "$container"
done
このスクリプトは、各終了した Docker コンテナを個別の tar アーカイブファイルにエクスポートします。ファイル名はコンテナ ID を使用します。
エクスポートされたアーカイブファイルの内容を検証するには、tar アーカイブ内のファイルをリスト表示します。
$ tar tf my-container.tar
これにより、my-container.tar ファイルの内容が表示され、エクスポートされた Docker コンテナのファイルシステム構造が表示されます。
終了した Docker コンテナをアーカイブとしてエクスポートすることは、バックアップ、移行、またはトラブルシューティングに役立ちます。エクスポートされたファイルには、コンテナのファイルシステムと設定を含む、コンテナの完全な状態が含まれています。
終了した Docker イメージを保存またはエクスポートした後に、それらを Docker 環境に戻すためにインポートまたはロードする必要がある場合があります。これは、イメージを復元したり、他者と共有したり、異なるシステム間で移動したりする場合に役立ちます。
ファイルに保存された Docker イメージをインポートするには、docker load コマンドを使用します。
$ docker load -i my-image.tar
これにより、my-image.tar ファイルから Docker イメージがロードされ、ローカルの Docker イメージリポジトリに追加されます。
インポートされたイメージは、システム上の Docker イメージをリスト表示することで確認できます。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest a1b2c3d4e5f6 10 minutes ago 133MB
Docker コンテナをアーカイブファイルとしてエクスポートした場合は、docker import コマンドを使用して Docker 環境に戻すことができます。
$ docker import - my-container:latest < my-container.tar
これにより、my-container.tar アーカイブの内容から、新しい Docker イメージ my-container:latest が作成されます。
次に、このイメージを使用して新しいコンテナを作成したり、その内容を調べたりできます。
$ docker run -d my-container:latest
$ docker inspect my-container:latest
保存済み Docker イメージのインポートとロードには、いくつかの利点があります。
保存済み Docker イメージのインポートとロードの方法を理解することで、Docker ワークフローを効率化し、コンテナ化されたアプリケーションの移植性と信頼性を確保できます。
このチュートリアルでは、終了した Docker イメージを保存およびエクスポートする方法を学びました。これで、終了したイメージを識別し、リスト表示し、ファイルに保存し、保存したイメージをインポート/ロードできるようになりました。このプロセスにより、必要なときに終了したイメージに簡単にアクセスして再利用できるため、Docker イメージを効率的に管理できます。これらの技術を習得することで、Docker イメージの管理を効率化し、Docker ベースのアプリケーション全体の効率を向上させることができます。