Linux
 Computer >> コンピューター >  >> システム >> Linux

Dockerコンテナを別のホストにコピー/移動する方法

Dockerコンテナを別のホストにコピー/移動する方法

Dockerコンテナーはソフトウェアの小さな箱であるため、いわば、それらをコピーしてコンピューター間で移動できます。ただし、これについてはあまり議論されません。おそらく、大規模な組織が独自のリポジトリを設定し、独自のイメージをカスタマイズして、適切と思われるサーバーに分散できるためです。ただし、1つ以上のコンテナをときどき移動する必要がある場合は、独自の配布ラインを設定する手間をかける必要はありません。

ローカルコンピューターでDockerインスタンスを操作し、それをより強力なサーバーに移動することにした可能性があります。または、カスタマイズしたコンテナを複数のコンピュータに展開して、「コピーアンドペースト」したい場合もあります。また、クラウドコンピューティングプロバイダーに不満があり、別のプロバイダーに切り替えたい場合もあります。状況がどうであれ、これを行うためのかなり簡単な手順があります。これについては以下で詳しく説明します。

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

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

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

docker stop NAME_OF_INSTANCE
Dockerコンテナを別のホストにコピー/移動する方法

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

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

このチュートリアルでは、結果の画像に一般的な名前mycontainerimageを選択しました。 。必要に応じて、この名前を変更できます。その場合は、それ以降のすべてのコマンドでそれを置き換えることを忘れないでください。

docker commit NAME_OF_INSTANCE mycontainerimage
Dockerコンテナを別のホストにコピー/移動する方法

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

docker save mycontainerimage | gzip > mycontainerimage.tar.gz

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

宛先ホストにコンテナイメージをロードする

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

gunzip -c mycontainerimage.tar.gz | docker load

ここではこのコンテナを初期化したことがないため、docker startで開始することはできません。 まだ。代わりに、このDockerインスタンスを最初に実行したときに、過去に使用したのと同じコマンドを発行します。現在の唯一の違いは、過去に使用した画像の代わりに、最後に「mycontainerimage」を使用することです。

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

docker run -d --name=PICK_NAME_FOR_CONTAINER mycontainerimage

対照的に、以下はパラメータ--publishのコマンドの例です。 ホストマシンのポート80をコンテナのポート80に転送する必要がありました:

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

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

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

mycontainerimage.tar.gzの作成をスキップしたい場合があります ファイル。コンテナには大量のデータが含まれているため、十分なディスク容量がない可能性があります。 1つのコマンドで、宛先ホストのイメージを保存、圧縮、転送、解凍、およびロードできます。 docker commitを実行した後 最初のセクションで説明したコマンドでは、これを使用できます:

docker save mycontainerimage | gzip | ssh root@203.0.113.1 'gunzip | docker load'

SSHクライアントが組み込まれているため、Windowsでも動作するはずです(PuTTYはもう必要ありません)。

その後、docker runを続行します 自分の状況に当てはまるコマンド。

結論

docker save およびdocker load コンテナをときどき移動するためのアドホックソリューションとして最適です。ただし、これを頻繁に行う場合は、代わりに独自のプライベートリポジトリを設定することをお勧めします。

画像クレジット:空軍医療サービス


  1. Windows を別のドライブに移動する方法

    Windows を別のドライブに移動する場合は、以下を読み続けてください。時間の経過とともに、コンピューター ハードウェア (他のすべてのものと同様) は消耗します。これはもちろん、時間の経過とともにパフォーマンスが低下し、交換する必要があるハード ドライブでも発生します。 ハードディスクは、作業内容 (ドキュメント、写真、ビデオ、機密データなど) を保存するために使用されるため、おそらくコンピューターで最も重要なデバイスです。したがって、データ損失の可能性を回避し、コンピューターの寿命とパフォーマンスを延ばすために、3 ~ 5 年後に交換することをお勧めします。 Windows ハード

  2. Windows 10 でインストール済みプログラムを別のドライブに移動する方法

    Windows 10 でプログラム、ソフトウェア、またはアプリケーションを実行するには、最初にインストールする必要があります。プログラムのインストールは、通常、オペレーティング システムを含むルート フォルダで行われます。ほとんどの場合、それはドライブ C です。しかし、インストールし続けるすべてのプログラムとゲームで C ドライブがいっぱいになり始めたらどうしますか?ドライブ C にはすべての Windows オペレーティング システム ファイルまたはプログラム ファイルが含まれており、間違ったフォルダを削除するとコンピュータが誤動作する可能性があるため、ドライブ C から削除できる、または