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

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

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

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

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

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

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

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

Какой VPS выбрать для небольшого Docker-проекта

Для небольшого Docker-проекта начните со Старт: 2 vCPU, 4 ГБ памяти и 80 ГБ NVMe. Если на сервере будет несколько приложений, сайтов или контейнеров, рассмотрите Стандарт: 4 vCPU и 8 ГБ памяти. Это ориентиры для небольшого проекта, а не обещание конкретного числа посетителей или запросов.

Для небольшого проекта

Старт · 2 vCPU · 4 ГБ RAM
80 ГБ NVMe
Начальная конфигурация для приложения и сопутствующих сервисов.

Заказать Старт

Для нескольких приложений

Стандарт · 4 vCPU · 8 ГБ RAM
160 ГБ NVMe
Больше памяти и процессорных ресурсов на одном VPS.

Заказать Стандарт

После заказа переходите к настройке по статье. Если ресурсы заканчиваются, увеличьте конфигурацию; для базы данных дополнительно учитывайте объём и характер запросов.

В кнопках заказа выбрана локация в Великобритании. Другую страну можно выбрать при оформлении.

Оплата VPS картой РФ или по СБП доступна в личном кабинете. Для безналичной оплаты от юридического лица или ИП запросите счёт у support@maatrix.io, указав тариф и реквизиты.

Подготовка нового 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 старый сервер можно гасить. Ежедневные бэкапы на новом месте уже подстрахуют вас с первого дня.

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

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

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

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

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

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

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

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

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

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

Готовы перейти к настройке?

Закажите Старт с конфигурацией, предложенной для старта, или сравните все тарифы. Оплата картой РФ и через СБП — в личном кабинете.

Заказать Старт Все тарифы и цены