Dockerコンテナ一括移行スクリプト

DevOps

概要

本リポジトリは、Linux環境におけるDockerコンテナの移行作業を大幅に簡略化するシェルスクリプト「Docker_container_migration.sh」を提供しています。従来、Dockerコンテナの移行にはコンテナの停止、イメージやボリュームの手動バックアップ、ファイル転送、復元作業と多くの手間がかかりました。本スクリプトはこれらの工程を一括で自動化し、2台のサーバー間でコンテナとそのデータを安全に移行可能です。特にボリュームデータを含むバックアップを自動生成し、一時的にダウンロード用サーバーを立てることでファイル転送も自動化。さらにNginxの設定ファイルを含めたバックアップも可能で、既存のコンテナ構成を変更せずに同等のdocker runコマンドを自動生成するため、本番環境などでの移行に最適です。

GitHub

リポジトリの統計情報

  • スター数: 25
  • フォーク数: 0
  • ウォッチャー数: 25
  • コミット数: 12
  • ファイル数: 2
  • メインの言語: Shell

主な特徴

  • ワンコマンドでDockerコンテナとボリュームのバックアップを自動生成
  • 一時的にダウンロード用サーバーを立ち上げ、ファイル転送を自動化
  • 既存のコンテナ設定を変更せず、同等のdocker runコマンドを自動生成・実行
  • Nginxの設定ファイルもバックアップ対象に含めることが可能

技術的なポイント

本スクリプトはShellで実装されており、Linuxサーバー間でのDockerコンテナの完全移行を目指しています。最大の特徴は、コンテナの状態だけでなく、永続化されたボリュームデータも一括でバックアップ・復元できる点です。通常、Dockerコンテナの移行ではイメージのプッシュ・プルやボリュームの手動コピー、設定ファイルの管理が必要で、ミスや手間が多く発生します。これを解決するために、スクリプトは以下の処理を自動化しています。

  1. バックアップフェーズ

    • 現在稼働中のDockerコンテナを調査し、docker inspectで各コンテナの起動パラメータを抽出。
    • それらのパラメータを元に、復元用のdocker runコマンドを自動生成。
    • コンテナに紐づくボリュームデータをtar形式でパッケージ化。
    • 一時的にポート8889でHTTPサーバー(簡易ダウンロードサーバー)を起動し、バックアップファイルのダウンロードを可能に。
  2. 復元フェーズ

    • 新サーバー側でスクリプトを起動すると、バックアップサーバーから自動的にファイルをダウンロード。
    • ダウンロードしたボリュームデータを展開し、ボリュームとして再作成。
    • 生成済みのdocker runコマンドを実行し、コンテナを復元。
    • 復元成功後にdocker psを表示し、緑色のチェックマークで成功を明示。

また、Nginxのサイト設定ファイルを自動的にバックアップ対象に含めることで、Webサーバーの設定変更漏れを防止しています。さらに、既存のコンテナ構成は変更せず、同等のパラメータでコンテナを再作成する「無侵入」設計を採用。これにより本番環境での安全な移行が可能です。加えて、スクリプトはシンプルなShellスクリプトで構成されているため、依存関係が少なく、導入が容易なのも利点です。

総じて、Dockerコンテナの移行作業を効率化し、人的ミスを減らすことに重点を置いた実用的なツールと言えるでしょう。特に複数のコンテナとそのボリュームを伴う大規模なDocker環境の移行において有効です。

プロジェクトの構成

主要なファイルとディレクトリ:

  • Docker_container_migration.sh: コンテナのバックアップ・復元を実行するメインスクリプト
  • README.md: 使い方や機能説明を記載したドキュメントファイル

まとめ

Docker環境の移行をワンステップで自動化し、現場の作業負荷を大幅に軽減する実用的なシェルスクリプト。

リポジトリ情報: