ジャンナのテーマ ライセンスが検証されていません. テーマ オプション ページに移動してライセンスを検証します. ドメイン名ごとに XNUMX つのライセンスが必要です.

Dockerサーバーを新しいシステムに簡単に移行する確実な手順

Dockerサーバーを新しいシステムに移行する方法

Dockerサーバーをあるシステムから別のシステムに移行するのは複雑な作業のように思えるかもしれませんが、正しい手順に従えばスムーズに実行できます。多くの開発者は、システムの変更やサーバーのアップグレードの際に、移行中のデータ損失やコンテナのクラッシュといった課題に直面します。Dockerの組み込みツールといくつかの実績のあるプラクティスを活用することで、すべての設定とアプリケーションをそのまま維持しながら、安全かつ迅速な移行を実現できます。

Shutterstock_2428013233-1-scaled Dockerサーバーを新しいシステムに簡単に移行する手順

Dockerコンテナをあるサーバーから別のサーバーに移行することを考えたことはありますか?最近、自宅のラボをどうしてもアップグレードしたくて、古いラックマウント型サーバーを処分して、より高性能な新しいシステムに買い替えたのですが、Dockerコンテナの移行は大変な作業で、どうすればよいか分からず困っていました。

実のところ、難しくはなかったのですが、恐ろしさやイライラよりも時間がかかりました。移行に必要なのは、いくつかのコマンドとかなりの忍耐力だけでした(実行しているDockerコンテナの数によって異なります)。以下は、Dockerサーバーを完全に新しいシステムに移行した方法です(VM自体は移動しません)。

Docker ホストの移動は面倒なことではありません。

昨年1月、初めてDockerコンテナを移植しました。UnraidからUbuntu仮想マシン上の完全なDockerインストールに移行しました。一部のアプリケーションでは組み込みのバックアップ方法を使用し、その他のアプリケーションはゼロから構築したため、移行は非常に簡単でした。

しかし最近、仮想Dockerホストをあるサーバーから別のサーバーに移行することにしました。仮想マシン自体の移行も検討していましたが、別の方法を採用し、Dockerインストールを完全に新しい仮想マシンに移行することにしました。

これを考えると非常にストレスを感じました。移行を実行するにはDockerコンテナを長時間シャットダウンする必要があり、移行中に発生する可能性のあるエラーも多数ありました。

しかし、実際に作業を始めてみると、予想していたほど大変ではありませんでした。確かに数時間はかかりましたが(もちろんいくつか問題にも遭遇しましたが)、全体的には比較的簡単で、苦労もありませんでした。

新しいシステムが正しくセットアップされていることを確認してください。

スクリーンショット-2025-08-21-at-4-14-10-pm Dockerサーバーを新しいシステムに簡単に移行するための確実な手順

まず、新しい仮想マシンの準備が整うようにしました。まず、Ubuntu Server 24.04 LTS という同じバージョンを使用していることを確認しました。Ubuntu Server は、Linux サーバーが必要な時はいつでも常に頼りにしている選択肢です。とても使い慣れています。

新しい仮想マシンにUbuntu Server 24.04をインストールした後、Dockerとその他の必要な依存関係がセットアップされ、使用できる状態になっていることを確認しました。これには追加のNVIDIAまたはIntelドライバーも含まれ、必要なフォルダパスがすべてDockerで設定されていることも確認しました。

これらすべてを設定した後、次のコマンドを使用して Docker サービスとそのソケットの両方を停止しました。

systemctl stop docker.socket
systemctl stop docker

両方のコマンドを実行する必要はないかもしれませんが、私は実行しました。これによりDockerの実行が停止し、基盤となるDockerファイルシステムに問題なく変更を加えることができました。

次に、旧システムでも全く同じコマンドを実行しました。ファイルを収集する前に、旧システム上のDockerがシャットダウンされていることを確認する必要がありました。そうすることで、移行プロセスの開始から完了まで何も変更されていないことが保証されます。

これは、すべてのDockerコンテナをシャットダウンすることを意味しました。正直に言うと、これが私にとって一番大変でした。私のホームラボは、Home AssistantからAudiobookshelf、Plex、その他多くのサービスまで、家全体をDockerで運用しています。Dockerをシャットダウンするには、これらのシステムもシャットダウンする必要があり、適切なタイミングを待たなければなりませんでした。

最終的に、サーバーがアイドル状態になっている時間を見つけ、Docker をシャットダウンして次のステップである転送用のすべてのファイルを準備する作業に進むことができました。

すべてのDockerファイルを収集する

スクリーンショット-2025-08-21-at-4-16-21-pm Dockerサーバーを新しいシステムに簡単に移行するための確実な手順

これが私にとって最も時間がかかった部分でした。プロセスをできるだけ高速化するために、Dockerボリュームをマウントしているフォルダからかなりの数のファイルとフォルダを削除しましたが、それでも数時間かかりました。

基本的にはDockerフォルダを圧縮し、別のリージョンでボリュームをマウントしている場合は、そのフォルダもマウントされます。Dockerボリュームのみを使用している場合は、最初のコマンドで検出されます。

まず、古いサーバーで次のコマンドを実行しました。

sudo tar -czvf docker-backup.tar.gz /var/lib/docker

このコマンドは、/var/lib/docker ディレクトリを tar.gz ファイルにバックアップします。実行しているコンテナの数や Docker Volumes を使用しているかどうかによって、多少時間がかかる場合があります。私の場合は、約 30 分から 45 分かかりました。

次に、古いサーバーで次のコマンドを実行しました。

sudo tar -cvzf docker-files.tar.gz /portainer

PortainerをDockerマネージャーとして使用しているため、すべてのDockerファイルをサーバーの/portainerディレクトリに配置しています。/portainer/audiobookshelf、/portainer/plexなどのフォルダがあります。上記のコマンドは/portainerディレクトリをzipファイルにコピーし、転送を容易にします。Dockerボリュームフォルダ内のデータサイズが大きいため、バックアップには約1時間かかりました。

両方のフォルダをコピーした後、圧縮されたアーカイブを新しいサーバーに移動する次のステップに進む準備ができました。

すべてを新しいシステムに移行するのは簡単です。

Dockerサーバーを新しいシステムに簡単に移行する確実な手順

205Gbpsの自宅ネットワークを所有しており、それを最大限に活用したいと思っています。そこで、あるサーバーから別のサーバーにファイルを転送し、ターミナルに転送速度を表示するコマンドを見つけました。

rsync -ah --info=progress2 docker-backup.tar.gz user@remote-host:/destination/path/

このコマンドを使うことで、転送プロセスを監視し、すべてが計画通りに進んでいることを確認できました。そして幸運なことに、すべてが計画通りに進みました。数分以内にファイルは古いサーバーから新しいサーバーに転送され、作業を進める準備が整いました。

もちろん、ご希望であれば、USBを使ってサーバー間でファイルを転送することもできます。以前使っていたサーバー(Dell R720ラックマウントシステム)にはUSB 2.0ポートしかなかったので、ネットワーク経由のファイル転送の方がはるかに高速でした。

新しいサーバーにファイルを配置したら、解凍するだけです。私はDockerディレクトリから始めました。

sudo tar -xpf docker-backup.tar.gz -C /

これが完了したら、次を実行しました:

sudo tar -xpf docker-files.tar.gz -C /

これにより、古い Docker ファイルとボリュームがすべて正しい場所に戻され、権限が正しく設定されたままになりました。これが移行の最大の部分です。

実際、Dockerの圧縮、tarファイルの転送、そしてファイルの解凍に最も時間がかかりました。私のサーバーでは、この3つの手順に合計で約3~4時間かかりました。

しかし、一度これが完了すると、移行完了に一歩近づきます。いよいよ、新しいサーバーでDockerを実行する時が来ました。

新しいシステムで Docker を起動すると、コンテナの実行が開始されます。

すべてのファイルを配置した後、すべてのコンテナを配置した状態で初めてDockerを実行しました。これは簡単で、必要なのはたった2つだけです。

systemctl start docker
systemctl start docker.socket

移行後、Dockerを実行すると多くの問題が発生するだろうと予想していましたが、実際にはほとんどの機能が復旧し、スムーズに動作するようになりました。実際、新しいマシンでDockerを実行するには、これだけで十分です。

古いシステムと新しいシステムの設定に大きな違いがなければ、すべて問題なく動作します。しかし、私のように2つのシステムを頻繁に切り替えている場合は、いくつか注意すべき点があります。

引っ越しの際に考慮すべきこと

海に浮かぶコンテナ、その中にDockerのロゴがある Dockerサーバーを新しいシステムに簡単に移行する確実な手順

最初に修正しなければならなかったことの一つは、NVIDIAランタイムを使用しているコンテナの一部をIntelランタイムに切り替えることでした。以前のサーバーでは、AI処理とトランスコーディングのためにGTX 1650グラフィックカードを使用していました。新しいサーバーには、Intelグラフィックスを統合したi9-13900Kプロセッサーが搭載されており、同じワークロードを処理できました。

これには多少の労力がかかり、まだ完全に移行したわけではありません (Scrypted を廃止し、統合 GPU ではなくプロセッサのみで実行するようにしました) が、全体としては移行は非常に簡単でした。

Home Assistantにも大きな問題が発生しました。何らかの理由で、Home AssistantのDockerコンテナが設定を一切転送してくれませんでした。/porttainer/homeassistantにいくつかの設定情報を保存していたのですが、まるでHome Assistantを初めて使った時のように起動してしまいました。

修正は簡単でした。古いVMを再起動し、Home Assistantを起動し、バックアップファイルをダウンロードして新しいVMに復元するだけで、すぐに使えるようになりました。

一部のDockerネットワークは、完全な見直しが必要になる場合があります。例えば、Scryptedの場合、何らかの理由で新しく作成されたScrypted-defaultネットワークをホストネットワークに戻す必要がありました。

新しい仮想マシンに静的IPアドレスを設定する必要がありました。さらに、統合グラフィックを使用してスムーズに動作させるため、サーバー周辺のコンポーネントもいくつか更新する必要がありました。

全体的に移行は非常にスムーズで、新しいサーバーには非常に満足しています。以前のサーバーよりも高速で、応答性が高く、効率性も向上しているのに、消費電力も抑えられています。

移行は比較的簡単でした。Dockerコンテナをあるシステムから別のシステムに移行する方法を学べて本当に良かったです。きっと将来役立つと思います!

Dockerコンテナを初めて使った方、あるいは初心者の方にとって、Dockerは素晴らしいツールです。私のホームラボはほぼDockerだけで動いています。

ここでは、すべてのホームラボで活用すべき、私のお気に入りのDockerコンテナをいくつかご紹介します。ほとんどのコンテナはセットアップが簡単で、セットアップに大きな付加価値をもたらします。実際、私のホームラボは家の中で最も便利なものの一つとなっています。

Dockerサーバーの移行を成功させるには、綿密な計画と正しい順序での手順の実行が不可欠です。移行プロセスを開始する前にバックアップを作成し、設定内容を文書化しておくことで、エラーを回避し、新しいシステム上でコンテナがスムーズに動作することを保証できます。適切な方法に従うことで、移行プロセスはより迅速かつ安全に実行され、新しいシステムで効率的に稼働するサーバーが完成します。

トップボタンに移動