Skip to main content

A tool for migrating Docker applications between servers

Project description

Docker Migration Tool

The Problem

Migrating Docker environments between servers can be challenging and error-prone. It involves multiple steps including backing up Docker data, transferring configurations, reinstalling services, and ensuring everything works correctly on the new server. This process is often manual, time-consuming, and requires specialized knowledge.

This tool solves this problem by automating the entire Docker migration workflow, reducing downtime, minimizing human error, and making migrations accessible even to those with limited Docker expertise.

Features

  • Identifies Docker images, containers, networks, and other related data from the Docker Compose file.
  • Creates backups of Docker data and packages them into zip or tar files.
  • Optionally includes additional host files specified in the Docker Compose file.
  • Transfers the created archives to a new server via VPN.
  • Extracts the archives and reinstalls Docker on the new server.
  • Validates the running state of Docker services after installation.

Project Structure

docker-migration-tool
├── src
│   ├── main.py                # Entry point of the application
│   ├── docker_utils           # Package for Docker utilities
│   │   ├── __init__.py
│   │   ├── compose_parser.py   # Parses Docker Compose files
│   │   └── docker_backup.py    # Handles Docker data backup
│   ├── archive                # Package for archiving utilities
│   │   ├── __init__.py
│   │   ├── archiver.py        # Creates and combines archives
│   │   └── extractor.py       # Extracts archives on the new server
│   ├── transfer               # Package for file transfer utilities
│   │   ├── __init__.py
│   │   └── file_transfer.py    # Transfers files via VPN
│   └── validation             # Package for validation utilities
│       ├── __init__.py
│       └── health_check.py     # Checks Docker service health
├── requirements.txt           # Project dependencies
├── setup.py                   # Packaging configuration
├── README.md                  # Project documentation
└── .gitignore                 # Git ignore file

Installation

Via pip

The simplest way to install the Docker Migration Tool is via pip:

pip install docker-migration

This will install the tool and all its dependencies. After installation, you can use the docker-migration command from anywhere.

Using a virtual environment (recommended)

For a clean installation isolated from system packages:

# Install virtualenv if needed
sudo apt-get update
sudo apt-get install -y python3-venv

# Create and activate a virtual environment
cd ~
python3 -m venv docker_migration_env
source docker_migration_env/bin/activate

# Install in the virtual environment
pip install docker-migration

# Test the command
docker-migration --help

From Source

Install the package:

pip install docker-migration

Usage

Basic Usage

  1. Navigate to the directory containing your Docker Compose file.

  2. Run the migration tool:

    docker-migration
    

    Or if installed from source:

    python src/main.py
    
  3. Follow the prompts to complete the migration process.

Advanced Options

Backup Mode

docker-migration --mode backup [options]

Options:

  • --backup-all: Backup all Docker resources on the server instead of just those in docker-compose.yml
  • --docker-src-base-dir PATH: Include a specific directory containing Docker source files in the backup
  • --skip-images: Skip backing up Docker images (which can be large)
  • --skip-containers: Skip backing up Docker containers
  • --config-only: Only backup configurations (equivalent to using both --skip-images and --skip-containers)
  • --pull-images: Pull Docker images defined in docker-compose.yml before backup
  • --transfer: Transfer the backup to another location
  • --destination PATH: Specify destination path (local path, user@host:/path for SCP, or ftp://user:pass@host/path for FTP)
  • --ftp-user USERNAME: FTP username (if not specified in destination)
  • --ftp-pass PASSWORD: FTP password (if not specified in destination)
  • --no-prompt: Do not prompt for user input (useful for scripted operations)

Restore Mode

docker-migration --mode restore --backup-file PATH [options]

Options:

  • --backup-file PATH: Path to backup file (required for restore mode)
  • --compose-file-path PATH: Path to docker-compose.yml file for restoration
  • --extract-only: Extract files without restoring Docker components
  • --target-dir PATH: Directory to extract application files to (for extract-only mode)

Use Cases

  1. Server Migration: Migrate a complete Docker environment from one server to another.
  2. Environment Backup: Create a backup of your Docker environment before making significant changes.
  3. Disaster Recovery: Restore Docker services quickly after a system failure.
  4. Dev/Test Cloning: Clone a production environment to development or testing servers.
  5. Configuration Extraction: Extract only configuration files without the Docker images for lightweight backups.
  6. Selective Migration: Migrate specific components of your Docker environment by using skip options.

Contributing

Contributions are welcome! Please open an issue or submit a pull request for any enhancements or bug fixes.

License

This project is licensed under the MIT License. See the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

docker_migration-0.1.2.tar.gz (22.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

docker_migration-0.1.2-py3-none-any.whl (24.8 kB view details)

Uploaded Python 3

File details

Details for the file docker_migration-0.1.2.tar.gz.

File metadata

  • Download URL: docker_migration-0.1.2.tar.gz
  • Upload date:
  • Size: 22.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for docker_migration-0.1.2.tar.gz
Algorithm Hash digest
SHA256 c33f0d17f66cf9c6404a74e543889440b7a1f1a543dcadca5b4b57f8572aa493
MD5 087dffa7fe889d4679c229c8c85afc3c
BLAKE2b-256 1740b88b0900454800de08361e7ec7b9c971de5b70c90698b3f4250c10138b8f

See more details on using hashes here.

File details

Details for the file docker_migration-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for docker_migration-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 208e8de5b4c447428033b6e15f8d00e0406a07698bb55e86647a02c034e7c077
MD5 b2dd2dd58f0c51a95f78e142aa0e948f
BLAKE2b-256 e2a839dcf64301f9104755a848b5f6efb8588de0e0d5f95901109ef1fe2d3f7e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page