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

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

Перенос Docker-проекта на другой VPS без простоя
Блог MAATRIX · 2026-07-07

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

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

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

Docker-проект состоит из трёх частей, и путать их нельзя:

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

Главное правило: образ воспроизводим, а том с данными — уникален. Основные силы — на бэкап томов.

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

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

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

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

На целевом сервере ставим Docker официальным скриптом и включаем автозапуск:

curl -fsSL https://get.docker.com | sh
systemctl enable --now docker

Проверяем, что всё на месте:

docker --version && docker compose version

Если переезжаете на MAATRIX, root-доступ есть сразу, а быстрый NVMe заметно ускорит и распаковку образов, и восстановление больших дампов базы. Локация UK, US или RU — на выбор.

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

Если образы лежат в реестре (Docker Hub или свой) — просто docker pull на новом сервере. Если реестра нет, выгрузите образ в архив и перекиньте по SSH:

docker save myapp:1.0 | gzip > myapp.tar.gz
scp myapp.tar.gz user@new-vps:/root/

На новом сервере загружаем обратно:

gunzip -c myapp.tar.gz | docker load

Но чаще правильнее хранить образы в реестре — тогда переезд сводится к pull. Про это есть отдельный гайд по своему Registry.

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

Самый ответственный шаг. Останавливаем контейнеры, чтобы данные не менялись во время бэкапа, и упаковываем том во временный контейнер:

docker compose down
docker run --rm \
  -v myproject_dbdata:/data \
  -v $(pwd):/backup alpine \
  tar czf /backup/dbdata.tar.gz -C /data .

Копируем архив на новый VPS и распаковываем в одноимённый том:

scp dbdata.tar.gz user@new-vps:/root/
# на новом сервере:
docker volume create myproject_dbdata
docker run --rm \
  -v myproject_dbdata:/data \
  -v $(pwd):/backup alpine \
  tar xzf /backup/dbdata.tar.gz -C /data

Имя тома должно совпадать с тем, что ждёт compose, иначе контейнер создаст пустой том и данные «пропадут».

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

Переносим docker-compose.yml и .env, поднимаем стек на новом сервере:

scp docker-compose.yml .env user@new-vps:/root/app/
# на новом сервере, в каталоге app:
docker compose up -d
docker 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 для переезда

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

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

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

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

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

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

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

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