Блог

Уроки, руководства и новости продукта.

Разработчикам

Что такое Docker и как использовать его на VPS?

3 ноября 2026 5 мин. чтения
Поделиться записью

Docker — это инструмент, который запускает приложение вместе со всем необходимым внутри изолированного пакета, называемого контейнером. На VPS использование Docker означает, что вы запускаете приложение из готового пакета, а не устанавливаете его по частям на сервер. Установка и удаление занимают несколько команд, а приложения не мешают настройкам друг друга.

В отличие от виртуальной машины, контейнер не несёт с собой операционную систему. Он использует ядро сервера, поэтому запускается за секунды и расходует мало памяти. Обратная сторона — изоляция у него слабее, чем у виртуальной машины.

Для начала хватит четырёх терминов

ТерминЧто он означает
Образ (Image)Готовый пакет приложения. Загружается из реестра, например Docker Hub.
Контейнер (Container)Работающая копия, запущенная из образа.
Том (Volume)Постоянное хранилище, которое сохраняет ваши данные, даже когда контейнер удалён.
ComposeИнструмент, который описывает несколько контейнеров в одном файле compose.yaml и управляет ими одной командой.

Удаление контейнера удаляет файлы внутри него. Всё, что должно сохраниться, например базу данных, размещайте на томе или в папке сервера.

Как установить Docker на Ubuntu?

Сначала подключитесь к серверу по SSH. Пакет docker.io из репозиториев Ubuntu подходит, и сервер Seturack с предустановленным Docker использует именно его. Для самой новой версии используйте собственный репозиторий apt Docker. Согласно официальной документации Docker, пакеты Ubuntu, такие как docker.io и docker-compose, конфликтуют с собственными пакетами Docker, поэтому если они установлены, сначала удалите их.

  1. Следуйте разделу «apt repository» на странице установки Docker для Ubuntu, чтобы добавить ключ подписи и источник репозитория. Выполняйте команды оттуда как есть, потому что от выпуска к выпуску они меняются.
  2. Установите пакеты: sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  3. Проверьте, что служба работает: sudo systemctl status docker
  4. Запустите тестовый контейнер: sudo docker run --rm hello-world

Если вы увидели приветственное сообщение, Docker готов. В Ubuntu и Debian служба сама запускается при каждой загрузке.

Ваш первый контейнер

Запустите веб-сервер одной командой:

docker run -d --name web --restart unless-stopped -p 80:80 nginx:1.30

-d запускает контейнер в фоне. --restart unless-stopped запускает его снова, когда сервер перезагружается или контейнер падает. -p 80:80 соединяет порт 80 сервера с контейнером. nginx:1.30 — имя образа и тег версии. Тег приведён лишь как пример, поэтому выберите актуальный стабильный тег на официальной странице Nginx в Docker Hub. Откройте IP-адрес сервера в браузере, и вы увидите приветственную страницу Nginx. Чтобы удалить его, выполните docker rm -f web.

Подключите том для постоянных данных, например -v sitedata:/usr/share/nginx/html. Список томов показывает docker volume ls. Службы в одном файле compose.yaml обращаются друг к другу по имени службы, поэтому ваше приложение, например, подключается к базе данных как к db.

Когда контейнеров несколько, соберите их в файле compose.yaml и выполните docker compose up -d в папке с этим файлом. Ключи image, restart, ports и volumes в файле соответствуют флагам выше. Состояние можно проверить командой docker compose ps, журналы прочитать через docker compose logs -f, а всё остановить через docker compose down.

Команды, которые вы будете использовать каждый день

КомандаДля чего нужен
docker psПоказывает работающие контейнеры. Добавьте -a, чтобы увидеть и остановленные.
docker logs -f webСледит за журналом контейнера web в реальном времени.
docker exec -it web shОткрывает оболочку внутри контейнера.
docker statsПоказывает использование процессора и памяти контейнерами.
docker compose pull и docker compose up -dЗагружает новый образ и заменяет контейнер новым. Данные на томах сохраняются.

Перед обновлением прочитайте примечания к выпуску приложения и сами повысьте тег версии в файле compose. Смысл фиксации тега в том, что обновление становится решением, а не случайностью.

На что обратить внимание: четыре момента

  • Docker обходит правила ufw. Согласно официальной документации, порты, которые публикует Docker, открываются раньше, чем применяются правила ufw. Правило ufw, запрещающее такой порт, не действует. Службу, которая не должна быть доступна снаружи, привязывайте только к локальному адресу, например -p 127.0.0.1:5432:5432. Контейнеры в одной сети Docker и так могут обращаться друг к другу, поэтому публиковать базу данных не нужно.
  • Тег latest. Если тег не указан, загружается latest. При следующей загрузке ваше приложение может перескочить на неожиданную версию. Указывайте конкретный тег и планируйте обновления сами.
  • Группа docker означает root. Добавление пользователя в группу docker даёт ему права уровня root (официальная документация). Добавляйте только те учётные записи, которым доверяете.
  • Журналы и образы заполняют диск. В настройке журналов Docker по умолчанию нет ограничения размера. Задайте его для контейнера: --log-opt max-size=10m --log-opt max-file=3. docker system df показывает использование диска, а docker image prune удаляет образы без тегов.

Docker или прямая установка?

Docker помогает, когда на одном сервере работает несколько приложений, которым нужны разные версии, когда вы хотите попробовать приложение и чисто удалить его или когда разработчик публикует официальный образ. В простом случае, например для одного сайта на WordPress, прямая установка тоже подойдёт. Docker — это дополнительный слой: обновлять его, следить за ним и копировать тома должны вы. Если сомневаетесь, начните с одного небольшого приложения. Переносить всё в Docker сразу не нужно.

В Seturack Docker приходит готовым

Если не хотите устанавливать Docker сами, закажите сервер с приложением Docker. Docker и Compose уже установлены, а настройка занимает около 2,5 минуты. Брандмауэр (ufw) включён, снаружи открыт только порт SSH, fail2ban защищает SSH, а журналы контейнеров ограничены 3 файлами по 10 МБ на контейнер. У приложения нет веб-интерфейса, поэтому в панели не показывается адрес сайта. Описанная выше ловушка с портами действует и здесь. Чтобы начать с готового сервера, загляните на страницу Docker VPS.

Готовое решение на Seturack: Portainer, Coolify, Dokploy.

Комментарии0

Комментариев пока нет

Поделитесь своим мнением первым.

Присоединяйтесь к обсуждению

Пожалуйста, войдите или зарегистрируйтесь, чтобы оставить комментарий.

Не пропускайте новые записи

Получайте наши свежие инструкции, руководства и новости продукта на почту.

Вы подписались на нашу рассылку.