GNU/Linux >> Linux の 問題 >  >> Panels >> Docker

Dockerイメージを他の人と共有する方法

同僚と共有する必要のあるDockerイメージを作成しましたか?受信者がdockerbuildを実行しなくても画像を配布する方法は次のとおりです。

Dockerfileの代わりにビルド済みのイメージを共有する 同僚がまったく同じソフトウェアを実行していることを確認できます。ビルドを再実行すると、環境が微妙に異なる可能性があります。状況に応じて、画像を配布するための2つのオプションがあります。

Dockerレジストリを使用する

Dockerイメージを共有する最も簡単な方法は、DockerイメージをDockerレジストリにプッシュすることです。この機能は、DockerCLIに完全に統合されています。この方法を使用する場合、手動でファイル転送を行う必要はありません。

デフォルトのレジストリはDockerHubです。これにより、画像を公に共有でき、1つのプライベートリポジトリも提供されます。 Docker Hubでアカウントを作成し、 docker loginを実行します あなたのターミナルで。アカウントの詳細を入力して、DockerCLIをアカウントに接続します。

次に、 docker build を使用して、通常どおりイメージをビルドします 。 Docker Hubユーザー名で始まるタグを追加します:

docker build -t my-account/my-image:latest .

次に、 docker pushを使用します タグ付けされたイメージをDockerHubにプッシュするコマンド:

docker push my-account/my-image:latest

これで、イメージがDockerHubに安全に保存されます。他のユーザーは、 docker pullを使用してプルダウンできます。 またはdockerrun コマンド。画像の共有が完了しました!

実際に使用するには、DockerHubでは不十分な場合があります。開発チームの一員である場合は、パブリックハブレジストリではなく、独自のサーバーにイメージを保持することをお勧めします。代わりに、自己ホスト型レジストリサーバーを作成して、 docker pushと完全に互換性のあるプライベートストレージを取得できます。 およびdockerpull コマンド。これにより、プライベートレジストリにアクセスできるすべての人と画像を簡単に共有できます。

画像のエクスポート

レジストリを使用できない場合は、代わりにDockerイメージアーカイブを手動でエクスポートできます。この機能は、DockerCLIにも組み込まれています。イメージを作成してから、 docker saveを使用します tarを取得するコマンド その内容のアーカイブ:

docker save my-image:latest > my-image.tar

エクスポートが完了するまでに少し時間がかかる場合があります。 Dockerには、イメージの再作成に必要なすべてのものが含まれます。これは、 Dockerfileのすべてのレイヤーです。 、およびベースイメージから継承されたレイヤー。アーカイブには、画像に関連付けられているタグに関する情報も含まれます。

出力は単純な<​​code>tarであるため ファイルを作成すると、選択した方法で自由に配布できるようになります。アーカイブは非常に大きくなる可能性があるため、通常はファイルサーバーまたはクラウドストレージプロバイダーにアップロードすることをお勧めします。

エクスポートされた画像を使用するには、 docker loadを実行します 指図。これはtarを受け入れます docker saveによって作成されたアーカイブ 入力ストリームとして。 Dockerはアーカイブのコンテンツをロードし、ローカルイメージのリストに追加します。

docker load < my-image.tar

これで、新しくインポートされた画像が docker imagesに表示されます。 出力。 docker runで新しいコンテナを開始する準備ができました 。

イメージをエクスポートおよびインポートすると、Dockerレジストリを使用するよりもいくつかの追加手順が追加されます。クライアント間でファイルを手動で転送する必要があります。したがって、このアプローチには利点もありますが、頻繁に使用するのにはあまり適していません。

画像をtarに変換する アーカイブは長期保存に役立ちます。レジストリサーバーの容量が不足している場合は、古い画像をアーカイブして tarをアップロードします ファイルストレージをバックアップすることは、容量を再利用するための費用効果の高い方法である可能性があります。将来必要になった場合でも、画像を復元することができます。

「dockerexport」はどうですか?

Dockerには、別のエクスポート関連コマンド docker export があります 。これをdockersaveと混同しないでください 。一方、 save 画像で動作します、 export 実際に個々のコンテナを管理します 。

docker export tarを生成します コンテナのファイルシステムのアーカイブ。これは、別のマシンでコンテナのレプリカを復元するために使用できます。アーカイブの内容を調べると、 / binのようなディレクトリを持つ通常のLinuxルートファイルシステムであることがわかります。 、 / etc および/usr

docker export my-container > my-container.tar

docker export 後で復元するためにコンテナのスナップショットを作成する場合に便利です。ただし、コンテナアーカイブは、最初に期待した方法ではインポートされません。コンテナは稼働中の実行環境を表すため、コンテナを直接「インポート」することはできません。代わりに、コンテナアーカイブをインポートすると、新しいが作成されます。 画像。

docker import my-container.tar my-image:latest

この例では、Dockerは my-container.tarのファイルシステムを取得します my-image:latestという新しい画像を自動的に作成します 。これは同じファイルシステムになりますが、エクスポートした元のコンテナーと同じベースイメージまたはDocker構成にはなりません。

関連: Githubの新しいDockerコンテナレジストリの使用を開始する方法

概要

Dockerを使用すると、アプリケーションイメージと開発環境を共同作業者と簡単に共有できます。通常は、他のすべてのユーザーがプルできる一元化されたリポジトリにイメージをプッシュするのが最善です。シナリオによっては、手動で配布するアーカイブに画像をエクスポートする方が理にかなっている場合があります。

Dockerを使用すると、コンテナのファイルシステムをエクスポートして、後でイメージに復元することもできます。これは正確な再構築ではなく、すべてのファイルシステムデータが含まれるわけではないため、これを使用する場合は注意が必要です。元のコンテナにマウントされたボリュームはファイルシステムアーカイブに含まれないため、これらを個別にバックアップする手順を実行する必要があります。


Docker
  1. ホスト間でDockerイメージを移動する方法

  2. Dockerを使用してJenkinsをインストールする方法

  3. Dockerイメージを変更する方法

  1. Dockerイメージに変更をコミットする方法

  2. Dockerfileを使用してカスタムDockerイメージを自動的に構築および構成する方法–パート3

  3. Minikube でローカル docker イメージを使用するには?

  1. 例を使用してDockerイメージに変更をコミットする方法

  2. Dockerfileを使用してDockerイメージを作成する方法

  3. Istioを使用してカナリア展開を実行する方法