MAATRIX / Блог / Перенос Docker-проекта на другой VPS

Перенос Docker-проекта на другой VPS

Блог MAATRIX · 2026-07-07

Переезд контейнеров пугает только на словах. С Docker вся суть проекта — это образы, тома и compose-файл. Переносим их аккуратно, чтобы не потерять данные.

Что именно переносим

['Docker-проект состоит из трёх частей, и путать их нельзя:', '
  • Образы — код и зависимости. Их проще пересобрать или подтянуть из реестра, чем тащить целиком.
  • Тома (volumes) — данные: база, загруженные файлы, конфиги. Вот их потерять нельзя.
  • docker-compose.yml и .env — описание стека и секреты.
', 'Главное правило: образ воспроизводим, а том с данными — уникален. Основные силы — на бэкап томов.']

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.

Арендовать VPS для переезда

Подготовка нового VPS

['На целевом сервере ставим Docker официальным скриптом и включаем автозапуск:', '
curl -fsSL https://get.docker.com | sh\nsystemctl enable --now docker
', 'Проверяем, что всё на месте:', '
docker --version && docker compose version
', 'Если переезжаете на MAATRIX, root-доступ есть сразу, а быстрый NVMe заметно ускорит и распаковку образов, и восстановление больших дампов базы. Локация UK или US — на выбор.']

Перенос образов

['Если образы лежат в реестре (Docker Hub или свой) — просто docker pull на новом сервере. Если реестра нет, выгрузите образ в архив и перекиньте по SSH:', '
docker save myapp:1.0 | gzip > myapp.tar.gz\nscp myapp.tar.gz user@new-vps:/root/
', 'На новом сервере загружаем обратно:', '
gunzip -c myapp.tar.gz | docker load
', 'Но чаще правильнее хранить образы в реестре — тогда переезд сводится к pull. Про это есть отдельный гайд по своему Registry.']

Перенос томов с данными

['Самый ответственный шаг. Останавливаем контейнеры, чтобы данные не менялись во время бэкапа, и упаковываем том во временный контейнер:', '
docker compose down\ndocker run --rm \\\n  -v myproject_dbdata:/data \\\n  -v $(pwd):/backup alpine \\\n  tar czf /backup/dbdata.tar.gz -C /data .
', 'Копируем архив на новый VPS и распаковываем в одноимённый том:', '
scp dbdata.tar.gz user@new-vps:/root/\n# на новом сервере:\ndocker volume create myproject_dbdata\ndocker run --rm \\\n  -v myproject_dbdata:/data \\\n  -v $(pwd):/backup alpine \\\n  tar xzf /backup/dbdata.tar.gz -C /data
', 'Имя тома должно совпадать с тем, что ждёт compose, иначе контейнер создаст пустой том и данные «пропадут».']

Запуск и проверка

['Переносим docker-compose.yml и .env, поднимаем стек на новом сервере:', '
scp docker-compose.yml .env user@new-vps:/root/app/\n# на новом сервере, в каталоге app:\ndocker compose up -d\ndocker compose ps
', 'Проверяем логи и что данные на месте:', '
docker compose logs -f --tail 100
', 'Только убедившись, что всё работает, переключаем DNS. Старый сервер держите ещё сутки как страховку.']

Переключение DNS без простоя

['Чтобы переезд был плавным, заранее снизьте TTL A-записи (например до 300 секунд) за сутки до миграции — тогда после смены IP кэш обновится за минуты, а не за часы.', '
  • Частая ошибка: перенесли образы, забыли тома — сайт открылся, но база пустая.
  • Частая ошибка: имя тома не совпало — данные не подхватились.
  • Частая ошибка: высокий TTL DNS — часть пользователей сутки идёт на старый IP.
', 'После успешного переезда на MAATRIX старый сервер можно гасить. Ежедневные бэкапы на новом месте уже подстрахуют вас с первого дня.']

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.

Арендовать VPS для переезда

Частые вопросы

Нужно ли останавливать контейнеры при переносе томов?

Да, особенно для баз данных. Иначе бэкап тома снимется в несогласованном состоянии. Сделайте docker compose down, снимите архив, затем переносите.

Почему на новом сервере база пустая?

Скорее всего, имя тома не совпало с тем, что ждёт compose, и создался новый пустой том. Проверьте имена через docker volume ls и восстановите данные в правильный том.

Как избежать простоя при смене сервера?

Заранее снизьте TTL DNS-записи, поднимите и проверьте проект на новом VPS, и только потом меняйте IP. Старый сервер держите включённым сутки как резерв.