Docker コンテナを別のホストにコピー/転送するにはどうすればよいですか?

Docker コンテナを別のホストにコピー/転送するにはどうすればよいですか?

[51CTO.com クイック翻訳] Docker コンテナは小さなソフトウェア ボックスなので、あるコンピュータから別のコンピュータにコピーして転送することができます。ただし、大企業では独自のライブラリを構築し、独自のイメージをカスタマイズして必要に応じてサーバーに配布できるため、この点についてはあまり議論されません。しかし、たまに 1 つまたは複数のコンテナを移動する必要があるだけであれば、それほど複雑にする必要はありません。

ローカル コンピューターで Docker インスタンスを使用していて、それをより強力なサーバーに移動することを決定する場合があります。あるいは、カスタム コンテナーを複数のマシンに展開し、コンテナーを「コピーして貼り付ける」だけが必要な場合もあります。場合によっては、クラウド コンピューティング プロバイダーに満足できず、別のプロバイダーに切り替えたいと思うこともあります。いずれにせよ、非常に簡単なプロセスがあり、その詳細は以下に記載されています。

ソースホストからコンテナイメージを保存する

最初にコンテナを停止する必要はありませんが、停止することを強くお勧めします。 Docker インスタンス内のデータのスナップショットを作成します。インスタンスの実行中にこれを行うと、スナップショットに含まれる一部のファイルが不完全になる可能性があります。誰かが 500MB のファイルをアップロードすると想像してください。 250MB をアップロードした後、docker commit コマンドを発行します。その後アップロードは続行されますが、別のホストで Docker イメージを復元すると、500 MB のうち 250 MB しか使用できなくなります。

したがって、可能であれば、まずインスタンスを停止してください。

  1. docker stop インスタンス名

[[274753]]

Docker コンテナは通常の初期イメージから構築されます。時間が経つにつれて、このベースイメージに独自の変更が加わります。コンテナ内で実行されているプロセスは、独自のデータを保存したり、その他の変更を加えたりすることもできます。これらすべてを保存するには、この新しい状態を新しいイメージにコミットできます。

インスタンスが現在実行中の場合、この操作によりインスタンスの内容が保存される間インスタンスが一時停止されることに注意してください。コンテナに大量のデータを追加した場合、この操作が完了するまでに長い時間がかかることがあります。これが問題になる場合は、次のコマンドの代わりに docker commit -p=false NAME_OF_INSTANCE mycontainerimage と入力することで、この一時停止を回避できます。ただし、絶対に必要な場合を除いて、これを行わないでください。この場合、一貫性のない/不完全なデータを含むイメージが作成される可能性が高くなります。

このチュートリアルでは、結果のイメージに「mycontainerimage」という汎用名が選択されました。必要に応じてこの名前を変更できます。名前を変更する場合は、後続のすべてのコマンドでその名前に遭遇したときに必ず置き換えてください。

  1. docker commitインスタンス名 mycontainerimage

次に、この画像をファイルに保存して圧縮します。

  1. docker でコンテナイメージを保存します | gzip > mycontainerimage.tar.gz

次に、好みのファイル転送方法を使用して、コンテナを移行するホストに mycontainerimage.tar.gz をコピーします。

コンテナイメージをターゲットホストにロードする

イメージを転送したホストにログインしたら、それを Docker にインポートします。

  1. gunzip -c mycontainerimage.tar.gz |ドッカーロード 

ここではコンテナを初期化していないため、docker start でコンテナを起動することはできません。代わりに、この Docker インスタンスを初めて実行するときに、以前に使用したのと同じコマンドを発行します。唯一の違いは、過去に使用したイメージではなく、「mycontainerimage」を使用することになる点です。

次のコマンドは単なる例です。自分に当てはまらない限り、コピーして貼り付けないでください。 (イメージを初めて実行するときに特別なパラメータは必要ありません)

  1. docker run -d --name=コンテナの名前を選択 mycontainerimage  

対照的に、次のコマンド例では、ホストのポート 80 をコンテナーのポート 80 に転送するために --publish パラメータが必要です。

  1. docker run -d --name=http-server --publish 80:80 mycontainerimage  

その後は、docker stop コマンドと docker start コマンドを使用して、コンテナを通常どおり停止および起動できます。

ファイルを作成せずに画像を転送する

場合によっては、mycontainerimage.tar.gz ファイルの作成をスキップしたい場合があります。コンテナ内に大量のデータが入っているため、ディスク容量が足りない可能性があります。 1 つのコマンドで、イメージを保存、圧縮、転送、解凍し、ターゲット ホストにロードできます。前述の docker commit コマンドを実行した後、以下を使用できます。

  1. docker でコンテナイメージを保存します |圧縮 | ssh [email protected] 'gunzip | docker ロード'  

SSH クライアントが組み込まれているため、Windows でも動作するはずです (PuTTY は不要になりました)。

次に、状況に応じて docker run コマンドを引き続き使用します。

結論

docker save と docker load は、コンテナを時々移動するための一時的なソリューションとして最適です。ただし、コンテナを頻繁に移動する場合は、代わりに独自の専用ライブラリを構築する必要があることに注意してください。

元のタイトル: Docker コンテナを別のホストにコピー/移動する方法、著者: Alexandru Andrei

[51CTOによる翻訳。パートナーサイトに転載する場合は、元の翻訳者と出典を51CTO.comとして明記してください。

<<:  Ascend 910とMindSporeコンピューティングフレームワークが正式にリリースされ、クラウドでのHuawei Cloud AIコンピューティングのパワーが解き放たれました。

>>:  AWSは、起業のハードルを下げることで、スタートアップ企業や開発者がより早く成功できるよう支援します。

推薦する

サーバーレスの時代が到来しました。準備はできたか?

[51CTO.comより引用] クラウドコンピューティングの発展の歴史をみると、4つの段階に分けるこ...

九兌有分析:ウェブサイト運営の在り方について語る

送料9元:毎日インターネットから商品を集め、送料9.9元で送料無料です。当店では、送料無料で 9.9...

12306 はユーザーから批判されていますが、支持すべきでしょうか、それとも反対すべきでしょうか?

年末が近づくにつれ、春節の列車の切符は販売ピーク期に入り、オンライン切符購入システム12306は世論...

ブログマーケティングを効果的に活用する方法

インターネット時代において、ブログは私たちにとって夕食後の欠かせないコミュニケーションプラットフォー...

外部リンク構築戦略の5つの側面

外部リンク構築の戦略原則は比較的マクロです。いわゆる戦略的方向性とは、外部リンク構築のプロセスにおい...

vpshoster: 15.3 元、無制限トラフィック VPS、ロシア、フィンランド、ドイツ、イタリア

2009 年に設立された興味深いロシアの VPS 業者 vpshoster (virtualdc.r...

数十億のリクエストと高可用性を備えた Redis (codis) 分散クラスターの秘密を簡単に紹介します。

[[262976]] 1. 背景生放送元年を迎え、春雨後の竹の子のように生放送作品が次々と登場してい...

Baiboの採用でリソースの検索に失敗しました。その理由は何ですか

少し前に、百度は諾米団への戦略的投資を発表しました。現在までに、百度はまたしても大型取引を成し遂げま...

ハイブリッド クラウドとは何ですか? また、どのように機能しますか?

[[205205​​]]クラウド コンピューティングは、IT のほぼすべてを説明するために使用できる...

企業のITアーキテクチャは、マルチクラウドへの移行時に3つの大きな問題を解決する必要があります。

クラウド データ移行テクノロジは非常に成熟しており、多くの標準ルーチンとアーキテクチャ モデルを備え...

FlipperHost - 1g メモリ/1g Vswap/4 コア/75g ハードディスク/2T トラフィック/月額 5.99 ドル

FlipperHost は、2009 年からエンタープライズ クラスの Web ホスティング サービ...

ASK.COM の成功事例: 検索結果をより効果的に表示

この検索エンジンは、Google のような検索大手に取って代わる可能性は低いものの、一部の検索大手よ...

DPU: サーバー エコシステムの「ハイジャック」

DPU はデータ処理ユニットの略です。 AWS の Nitro をはじめ、クラウド コンピューティン...