80bb196d24b9ff354f883d53b28086b74d41f67c
docker-migrate
Универсальный интерактивный инструмент миграции Docker-сервисов между Ubuntu-серверами.
Что делает
Этот скрипт переносит не только Docker-контейнер, а всё окружение сервиса:
- Docker Compose, .env, volumes, bind mounts
- Nginx конфиги, SSL-сертификаты
- Systemd unit-файлы
- Cron-задания
- Sidecar-процессы (WARP, wireproxy, SOCKS-прокси, и т.д.) — найденные через loopback-соединения
- Сетевую конфигурацию (iptables, routes, sysctl)
Быстрый старт (одна команда из Gitea)
wget -qO- https://giteas.stitch505.su/Stitch505/docker-migrate/raw/main/install.sh | bash
Или через curl:
curl -fsSL https://giteas.stitch505.su/Stitch505/docker-migrate/raw/main/install.sh | bash
install.sh сам:
- Проверит Python3 (при необходимости —
apt-get install -y python3) - Скачает репозиторий (git clone / curl zip / wget zip) в
/opt/docker-migrate - Поставит symlink
/usr/local/bin/docker-migrate - Сразу запустит
migrate
Repository: https://giteas.stitch505.su/Stitch505/docker-migrate
Как пользоваться
На старом сервере (source):
docker-migrate
# или: python3 /opt/docker-migrate/migrate
# Выбираем: 1 — Подготовка к переносу (Source)
Скрипт:
- Запрашивает имя Docker-сервиса/контейнера
- Автоматически найдет всё окружение
- Покажет манифест (что будет перенесено)
- Попросит подтверждения
- Соберёт tar.gz архив
- Предложит остановить сервис
- Предложит передать на новый сервер
На новом сервере (target):
docker-migrate --mode=target --remote-dir=/tmp/docker-migrate-incoming
Или интерактивно:
docker-migrate
# Выбираем: 2 — Восстановление (Target)
Скрипт:
- Проверит Ubuntu и права
- Установит Docker, Compose, nginx (если нужно)
- Сделает backup существующего
- Восстановит файлы
- Запустит сервис и проверит логи
Resume (если ошибка)
python3 migrate --resume
Или:
python3 migrate
# Выбираем: 3 — Продолжить (Resume)
Статус и логи
python3 migrate --status
python3 migrate --logs
Архитектура
docker-migrate/
├── migrate # bootstrap (python3)
├── migrate.sh # bash wrapper (опционально)
├── core/
│ ├── main.py # точка входа, меню, CLI
│ ├── fsm.py # state machine (resume)
│ ├── state.py # JSON state.json
│ ├── color.py # цветной вывод и UI
│ └── runner.py # shell exec с логами
├── discover/
│ ├── docker.py # docker inspect, compose, mounts
│ ├── nginx.py # nginx -T parser
│ └── network.py # loopback, sidecar, routes, iptables
├── manifest/
│ └── manifest.py # build/review JSON manifest
├── source/
│ └── source.py # source-режим (pack, stop, transfer)
├── transfer/
│ └── transfer.py # scp/rsync adaptive transfer
└── target/
└── target.py # target-режим (install, restore, verify)
Зависимости
python3 >= 3.8docker(на source)ssh/scp/rsync(для transfer)sudoили root (для target)
Принципы
- Модульность, не монолит
- Универсальность, не заточен под один сервис
- Автопоиск вместо ручного выбора
- Полный манифест вместо тупого копирования
- Resume вместо "начни сначала"
Description
Универсальный интерактивный инструмент миграции Docker-сервисов между Ubuntu-серверами. Включает авто-поиск зависимостей (Docker, nginx, sidecar, systemd, cron), manifest, adaptive transfer и resume.
Languages
Python
96.5%
Shell
3.5%