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

推薦する

ワイヤーフレームをより伝わりやすくする 10 の方法

私は毎週1つの記事を翻訳していますが、それは簡単な作業ではありません。読むことから、選考、試訳、そし...

Amazon Web Services の専門家の視点: 最新アプリケーションの証明可能なセキュリティ - 最高水準のクラウド セキュリティを構築する唯一の方法

セキュリティはすべての企業にとって最優先事項です。セキュリティの強化、包括的なコンプライアンス管理の...

Baiduの絶え間ない変化に直面して、SEOにはより冷静な姿勢が求められる

昨日、たまたまネットで記事を見ました。どのページだったかは覚えていませんが、長年 SEO に携わって...

クラウド移行プレイブック: SaaS モデルへの適応

クラウドベースの SaaS モデルでは、システムの構築、セットアップ、管理は必要ありません。企業は必...

哀れなウェブマスターとロボットが語らなければならない物語

今日 Xiaomao がお話ししたいのは、すべてのウェブマスターがよく知っているロボット ファイルで...

分散MemCacheの詳細な解釈

MemCacheとはMemCache は、動的な Web アプリケーションがデータベースの負荷を軽減...

ウェディングフォトグラフィーがユーザーのニーズをどのように捉えられるかについての実践的な分析

以前、ウェディング写真撮影がユーザー エクスペリエンスを向上させる方法についての記事「ケース分析: ...

テンセントクラウドがKPLイベントに協力、ワンストップリモート制作を提供

2020年グローバルeスポーツリーダーサミットとテンセントeスポーツ年次会議において、テンセントクラ...

Aoyou Hosting: 春に全11室のVPSルームが25%オフ、老舗ブランド、ウェブサイト構築などにおすすめ(IP変更は10元のみ)

今年はAoyou Hostingの10周年の節目です。同社はオーストラリアのShy Brotherに...

新しいサイトをBaiduに素早くインデックスさせるには、4つのことを実行しましょう

ウェブサイト構築会社として、新しいウェブサイトを構築することは非常に一般的なことです。多くの顧客が新...

プロデューサー実装ロジック - Kafka 知識システム (II)

[[409180]] Kafka はメッセージを個別に送信しますか、それともバッチで送信しますか? ...

モバイルインターネット企業では、各部門の KPI は何ですか?

KPI(主要業績評価指標)は、国内のほとんどのインターネット企業が従業員の業績を評価するために一般的...

中国航天科技集団:「中国製造2025」の実現に向けてINDICSを構築

集中中国航天科技集団は、6つの研究機関、14の株式会社企業、23の傘下組織、600社を超える各レベル...

初心者のためのクラウドコンピューティング入門

2006 年 8 月 9 日、当時 Google の CEO であった Eric Sc​​hmidt...

安価なサーバー: Virpus - 100 ドル / デュアル チャネル L5639 / 72G メモリ / 2x500g / 5T トラフィック

多くの人は、安価なサーバーを求めています。安価で、高度な設定が可能で、操作が簡単で、できれば自由にイ...