Метод 1: docker save + docker load
# На старом сервере — сохраняем образ
docker save myapp:latest | gzip > myapp.tar.gz
# Передаём на новый сервер
scp myapp.tar.gz root@NEW_SERVER:/tmp/
# На новом сервере — загружаем образ
docker load < /tmp/myapp.tar.gz
# Проверяем
docker images | grep myapp
Метод 2: Через Docker Registry (рекомендуется)
# Тегируем и пушим в Registry
docker tag myapp:latest registry.example.com/myapp:latest
docker push registry.example.com/myapp:latest
# На новом сервере
docker pull registry.example.com/myapp:latest
💡 Если используете docker-compose, достаточно перенести docker-compose.yml и тома данных — образы пересоберутся или скачаются.
Перенос томов (volumes)
# Экспорт тома
docker run --rm -v myapp_data:/data -v $(pwd):/backup alpine tar czf /backup/volume_backup.tar.gz -C /data .
# Импорт на новом сервере
docker volume create myapp_data
docker run --rm -v myapp_data:/data -v $(pwd):/backup alpine tar xzf /backup/volume_backup.tar.gz -C /data
Чеклист миграции Docker
| Шаг | Статус |
|---|---|
| Установить Docker на новом сервере | ⬜ |
| Перенести docker-compose.yml | ⬜ |
| Перенести образы или настроить pull из Registry | ⬜ |
| Перенести тома данных | ⬜ |
| Обновить .env файлы | ⬜ |
| Проверить на новом сервере | ⬜ |
| Переключить DNS | ⬜ |
⚠️ Перед остановкой контейнеров на старом сервере убедитесь что все данные синхронизированы, особенно если используются persistent volumes.