Docker コンテナを他のサーバーに移行する 5 つの方法

Docker コンテナを他のサーバーに移行する 5 つの方法

多くの場合、移行は避けられません。ハードウェアのアップグレード、データ センターの変更、古いオペレーティング システムなど、これらすべてが移行のきっかけとなる可能性があります。

Docker コンテナの移行は、多くの場合、移行タスクの一部です。今日は、Docker コンテナを既存のサーバーから別のサーバーに移行するさまざまな方法について説明します。

Docker コンテナを別のサーバーに移行する方法。Docker コンテナをあるサーバーから別のサーバーに移行する直接的な方法はありません。次の方法の 1 つ以上を使用して、Docker コンテナの移行の問題を解決します。

1. コンテナの輸出入

コンテナをエクスポートするとは、コンテナのファイル システムから圧縮ファイルを作成することを意味します。エクスポートされたファイルは「gzip」ファイルとして保存されます。

docker export コンテナ名 | gzip > コンテナ名.gz

次に、scp や rsync などのファイル転送ツールを使用して、圧縮ファイルを新しいサーバーにコピーします。新しいサーバーでは、この gzip ファイルが新しいコンテナーにインポートされます。

zcat コンテナ名.gz | docker import - コンテナ名

新しいサーバーで作成された新しいコンテナには、「docker run」コマンドを使用してアクセスできます。

コンテナのエクスポート ツールの欠点の 1 つは、コンテナのポートと変数がエクスポートされず、コンテナを含む基礎データもエクスポートされないことです。

これにより、別のサーバーでコンテナをロードしようとするとエラーが発生する可能性があります。この場合、コンテナをあるサーバーから別のサーバーに移行するために、Docker イメージの移行を選択します。

2. コンテナイメージの移行

Docker コンテナを別のサーバーに移行する最も一般的な方法は、コンテナが関連付けられているイメージを移行することです。

移行する必要があるコンテナについては、まず「Docker commit」コマンドを使用して Docker イメージを圧縮ファイルに保存します。

docker commit コンテナID イメージ名

結果のイメージは圧縮されて新しいサーバーにアップロードされ、そこで「docker run」を使用して新しいコンテナが作成されます。

この方法では、データボリュームは移行されませんが、コンテナ内に作成されたアプリケーションのデータは保持されます。

3. 画像の保存と読み込み

Docker イメージは、アプリケーションのコード、ライブラリ、構成ファイルなどのパッケージです。これらのイメージから Docker コンテナが作成されます。

「docker save」を使用してイメージを圧縮し、新しいサーバーに移行できます。

docker save イメージ名 > イメージ名.tar

新しいサーバーで、「docker load」を使用して、圧縮されたイメージ ファイルを使用して新しいイメージを作成します。

cat イメージ名.tar | docker load

4. データボリュームを移行する

Docker コンテナ内のデータ ボリュームは、コンテナ固有のデータが含まれる共有ディレクトリです。ボリューム内のデータは永続的であり、コンテナの再作成時に失われることはありません。

エクスポート ツールまたはコミット ツールを使用して Docker コンテナーまたはイメージをあるサーバーから別のサーバーに移行する場合、基礎となるデータ ボリュームは移行されません。

この場合、データを含むディレクトリは手動で新しいサーバーに移行されます。次に、新しいサーバー上にコンテナを作成し、そのディレクトリをデータ ボリュームとして参照します。

もう 1 つの簡単な方法は、「docker run」コマンドに「-volumes from」パラメータを渡してデータ ボリュームをバックアップおよび復元することです。

docker run --rm --volumes-from データボリューム名 -v $(pwd):/backup イメージ名 tar cvf backup.tar /path-to-datavolume

ここで、データボリューム名は /path/to/volume です。このコマンドは、データ ボリュームのバックアップを提供します。作業ディレクトリを指定するには、-w/backup を指定することもできます。 /backup フォルダに生成されたバックアップは、scp または ftp ツールを使用して新しいサーバーにコピーできます。コピーされたバックアップは抽出され、新しいコンテナのデータ ボリュームに復元されます。

docker run --rm --volumes-from データボリューム名 -v $(pwd):/backup イメージ名 bash -c "cd /path-to-datavolume && tar xvf /backup/backup.tar --strip 1"

5. Dockerコンテナ全体を移行する

ここで紹介したアプローチは、単一のコンテナに対して機能します。しかし、すべてのコンテナをあるサーバーから別のサーバーに移行する必要がある場合は、別のアプローチを採用します。

この方法では、docker ディレクトリ全体 (「/var/lib/docker」) を新しいサーバーにコピーします。このアプローチを成功させるには、いくつかの重要なポイントを特定する必要があります。

  • フォルダーの権限と所有権を保持します。
  • 移行前に Docker サービスを停止します。
  • 両方のサーバーの Docker バージョンに互換性があることを確認します。
  • 移行前と移行後にコンテナ リストと機能を検証します。
  • 環境変数およびその他の構成ファイルへのパス。

何らかの障害によりこの方法が機能しない場合は、コンテナとイメージをあるサーバーから別のサーバーに移行するためのカスタム スクリプトを構成します。

結論: Docker コンテナは、DevOps や Web ベースのホスティングで広く使用されています。本日は、Docker エンジニアが管理する Docker インフラストラクチャ内の別のサーバーに Docker コンテナを移行するさまざまな方法について説明しました。

これで、Docker コンテナを他のサーバーに移行する 5 つの方法についての記事は終了です。Docker コンテナをサーバーに移行する方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Docker のタイムゾーンの問題とデータ移行の問題
  • Dockerイメージのインポート、エクスポート、バックアップ、移行操作
  • ローカルDockerコンテナをサーバーに移行する詳細な説明
  • ブログをDockerに移行する
  • Dockerコンテナをサーバー間で移行する方法
  • Dockerでデータディレクトリを移行する方法

<<:  SQLでEXPLAINコマンドを使用する方法

>>:  Vue がコンポーネント間の通信を実現するいくつかの方法 (複数のシナリオ)

推薦する

Vueの計算プロパティの詳細な説明

1. 計算属性とは何ですか? 簡単に言えば、計算された結果が属性に保存されるもので、キャッシュとして...

WindowsでMysql5.7.17のインストールと起動に失敗する問題を解決する

マシンに初めて MySQL をインストールします。オペレーティングシステムはwin7ですmysqlの...

Linux で binlog ファイルの作成時間を表示するコマンド

目次背景分析する方法背景MySQL は 26 日の 16:23:49 に大量のスロー クエリを生成し...

Linux のスケジュールされたタスクの crontab のインストールと使用の詳細な説明

crontabをインストールするyum install crontabs CentOS 7が付属して...

MySQLにおけるトランザクションの永続性実装原理の詳細な説明

序文データベース トランザクションに関して言えば、トランザクションの ACID 特性、分離レベル、解...

JS を使用して要素が配列であるかどうかを判断する例

検証できるデータの種類は次のとおりです a = [1,2,3,4,5,6]とします。 b = [とし...

Reactでコンポーネントを作成する方法

目次序文コンポーネントの紹介クラスコンポーネントの作成状態についてレンダリングについて関数コンポーネ...

JavaScript コードベースをよりクリーンにする 5 つの方法

目次1. 短絡や条件文の代わりにデフォルトのパラメータを使用する2. 複数の条件の処理3. スイッチ...

マークアップ言語 - 簡略化されたタグ

123WORDPRESS.COM HTML チュートリアル セクションに戻るには、ここをクリックして...

MySQL の「特殊キーが長すぎます」の解決策

目次解決策1解決策2テーブルを作成するときに、興味深い問題に遭遇しました。「指定されたキーが長すぎま...

CSSは下部のタップバー機能を実装します

現在多くの携帯電話には、下部のタブバーを切り替える機能があります。私も最近、同様の機能を見つけました...

イベントバブリング、イベントキャプチャ、イベント委任に基づく詳細な説明

イベントバブリング、イベントキャプチャ、イベント委任JavaScript では、イベント委譲は非常に...

Vue 仮想 Dom から実際の Dom への変換

別のツリー構造があるJavascriptオブジェクトでは、このツリーが本物であると伝えるだけでよいD...

Kubernetes YAMLファイルの使用

目次01 YAMLファイルの概要YAML---キー値型YAML---リスト型02 K8Sにおけるマス...

MySQL データベース インデックスが B+ ツリーの使用を選択するのはなぜですか?

MySQL データベース インデックスが B+ ツリーを使用する理由をさらに分析する前に、データ構...