Dockerを初めて使用する場合は、コンテナーやイメージを他の開発者やマシンと共有する方法をまだ理解していない可能性があります。しかし、コンテナを共有することは可能ですか?はい! docker save
しましょう imageコマンドとdocker export
画像コマンドでうまくいきます!
このチュートリアルでは、Dockerコマンドを実行して、共有するためにコンテナーとイメージを保存およびエクスポートする方法を学習します。
準備?始めましょう!
前提条件
このチュートリアルは、実践的なデモンストレーションになります。フォローする場合は、次のものがあることを確認してください。
- このチュートリアルでは、バージョン20.10.7としてインストールされたDockerDesktopまたはEngineを使用します。
- このチュートリアルでは、Docker互換のオペレーティングシステムであるUbuntuを使用しています。
ベースDockerアプリケーションの構築
Dockerコンテナーとイメージのエクスポートまたは保存にジャンプする前に、まず、共有目的で使用するアプリケーションを構築する必要があります。コマンドライン環境を介して、サンプルのDockerアプリケーションとして基本的な算術ソリューションを構築します。
1. Dockerfile
という名前のプロジェクト用のファイルを作成します 、以下のコードを新しく作成したDockerfile
に貼り付けます 。
以下のコードは、値が10になる基本的な算術演算を実行します。
# busybox provides Unix utilities in a single executable file,
# which enables you to do some arithmetic.
FROM busybox
# Performs a basic arithmetic operation that results in a value of 10.
CMD echo $(((20*5)/10))
2.次に、ターミナルを開き、docker build
を実行します 以下のコマンドを使用して、(arithmetic
という名前のアプリケーションをビルドします )作業場所(.
)。
docker build --tag arithmetic .
Linuxを使用している場合は、次のような「permissiondenied」エラーが発生しないようにsudoコマンドの前に追加する必要がある場合があります。
sudo docker build --tag arithmetic
。sudo
を追加する コマンドは、コマンドを管理者として昇格させます。
3.以下のコマンドを実行して、作成したDockerアプリケーションを実行します(arithmetic
)。 Dockerアプリを実行すると、アプリケーションのコンテナーも自動的に作成されます。
docker run arithmetic
Dockerコンテナのエクスポート
ベースのDockerアプリケーションができたので、Dockerコンテナをエクスポートする方法について説明します。巨大なアプリケーションの構築には長い時間がかかり、コンテナをチームと共有したいだけの場合はドラッグになる可能性があります。では、コンテナを共有するためのより迅速な方法はありますか?はい!
Dockerfileから直接アプリケーションをビルドする代わりに、Dockerコンテナをエクスポートします。
1. docker
を実行します 以下のコマンドですべてを一覧表示します(ls --all
)containers
お使いのマシンで利用できます。 CONTAINER ID
に注意してください 次のステップでコンテナをエクスポートするために必要になるため、共有するコンテナの
エクスポートできるのはコンテナのみであり、画像はエクスポートできないことに注意してください。
docker container ls --all
2.次に、以下のコマンドを実行してexport
選択したDockerコンテナ(container-id
)。 container-id
を置き換えます 手順1でメモしたコンテナIDを使用します。
エクスポートするときは、コンテナのファイルシステムを .tarに保存します。 アーカイブ(arithmetic.tar
)。
docker export container-id > arithmetic.tar
3.最後に、ファイルマネージャでプロジェクトフォルダを確認すると、新しい .tarが表示されます。 アーカイブが作成されました( arithmetic.tar )。コンテナを.tarにエクスポートしたので アーカイブ、誰とでも共有できるようになりました。
Dockerコンテナのインポート
エクスポートする代わりに、チームメートが共有したDockerコンテナをインポートする必要があるかもしれません。その場合、docker import
コマンドはあなたが必要とするものです。 docker import
コマンドは、エクスポートされたファイルシステムを取得し、それをマシンで実行できるイメージファイルシステムに変換します。
1.次のdocker
を実行します import
へのコマンド コンテナ(arithmetic.tar
)そしてそれを画像に変換します。インポートするときは、タグ(latest
)を添付する必要があります )画像に名前を付けます(put_any_name_here
)、以下に示すように。
docker import arithmetic.tar put_any_name_here:latest
2.次に、以下のコマンドを実行して、既存のすべてのDockerイメージを一覧表示し、新しいイメージが存在するかどうかを確認できるようにします。
docker images
以下に、新しいDockerイメージが存在することを確認できます。
3.次に、docker run
を実行します。 以下のコマンドでシェルを開きます(sh
)インポートされた画像の場合。コンテナはインタラクティブに実行され、端末に接続されます(-i
および-t
フラグ)。
docker run -i -t put_any_name_here:latest sh
以下のプロンプト(/#)で、インポートされた画像のシェルにいることがわかります。
4.最後に、以下のコマンドを実行して、イメージが期待どおりに機能するかどうかを確認します。
echo $(((20*5)/10))
画像が機能する場合は、 10の出力が得られます 、以下に示すように。
イメージを直接実行しようとすると、インポートされたイメージはファイルシステムイメージであるため、以下に示すようなエラーが発生します。
Dockerによる画像の保存画像の保存
おそらく、コンテナではなくDockerイメージを保存したいでしょう。その場合は、docker save
を使用してください 代わりにimageコマンド。 docker export
とは異なり コマンド、docker save
コマンドを使用すると、1つ以上の画像をtarアーカイブに直接保存して、誰とでも共有できます。
保存およびロードできるのはDockerイメージのみであり、コンテナはロードできないことに注意してください。
- 以下のコマンドを実行して、Dockerイメージ(算術)をお好みの .tarに保存します。 アーカイブ(
arm_image.tar
)。 .tarを共有できるようになりました 他の開発者と一緒にアーカイブして、イメージをロードできるようにします。
docker save arithmetic > arm_image.tar
2.次に、以下のコマンドを実行して、選択した名前(mkdir arm
)でディレクトリを作成します。 )。ただし、このデモでは、ディレクトリの名前はarm
です。 。次に、コマンドは .tarから画像を抽出します アーカイブ(-xf arm_image.tar
)新しいディレクトリ(arm
)。
.tarのコンテンツを抽出する アーカイブでは、 .tarに保存した画像かどうかを確認できます アーカイブが存在します。
mkdir arm && tar -xf arm_image.tar -C arm
3.最後に、tree
を実行します ~/arm
で抽出した画像のディレクトリツリーを表示するには、以下のコマンドを実行します ディレクトリ。 tree ~/arm
以下に、Dockerイメージを抽出したディレクトリ内のファイルとサブディレクトリを示します。
DockerハブでDockerイメージを共有する場合は、
docker save
を実行するのが最適なオプションです。 指図。なんで?docker save command
を使用 、基本的に、イメージが実行されるはずの方法で正確に保存されます。また、画像はDockerハブにのみ投稿できるため、間違いなくdocker export command
良い選択肢ではありません。
Dockerイメージの読み込み
バックアップまたは共有の目的でイメージをすでに保存していると仮定すると、どのようにイメージをマシンにロードしますか?心配ありません。docker load
コマンドが役立ちます。 docker load
コマンドを使用すると、イメージまたはリポジトリをマシンにロードして、イメージとタグの両方を復元できます。
docker load
をよりよく理解するため コマンドが機能する場合は、以前に作成したすべてのDockerイメージを削除します。
1.以下のコマンドを実行して、すべてのDockerimages
を一覧表示します あなたのマシンで。
docker images
以下に、2つの利用可能な画像があることがわかります。各画像の画像IDをメモします 次のステップでそれらの画像を削除するので。
2.以下のコマンドを実行して削除します(rm
)指定したイメージIDによるDockerイメージ。 imageID1
を置き換えます およびimageID2
手順1でメモした画像IDを使用します。
docker image rm imageID1 imageID2
3.次に、docker load
を実行します .tar から画像を読み込むには、以下のコマンドを使用します アーカイブ(arm_image.tar
)。
docker load < arm_image.tar
4.docker images
を再実行します 手順1で行ったようにコマンドを実行して、マシンで使用可能なすべてのイメージを一覧表示します。 docker images
docker images
以下に、新しくロードされた画像を示します。
5.最後に、以下のコマンドを実行して、イメージが機能するかどうかを実行およびテストします。
docker run arithmetic
コマンドが値10を返したことに注意してください。これは、ロードされたイメージが機能することを示します。
結論
このチュートリアルを通じて、コンテナのエクスポートとインポートの方法、および画像の読み込みと保存の方法を学びました。これで、Dockerの保存イメージとコンテナーをTARファイルなどの共有可能な形式に変換するための基本的な知識が得られます。
ある時点で、Dockerイメージまたはコンテナを共有する必要があります。では、Dockerコンテナとイメージ、おそらくバックアップシステムを操作するときに、この新しく発見された知識をどのように組み込む予定ですか?