Docker — контейнеры и простой запуск приложений на сервере

DevOps 21 сентября 2026 г. 👁️ 17
Docker — контейнеры и простой запуск приложений на сервере

Что такое Docker?

Docker — платформа для разработки, доставки и запуска приложений в изолированных окружениях, которые называются контейнерами.

Главная идея Docker заключается в том, что приложение можно упаковать вместе с необходимыми библиотеками, зависимостями и настройками, а затем одинаково запускать на разных компьютерах и серверах.

Вместо ручной установки множества компонентов получается простая схема:

Docker Image → Docker Container → работающее приложение

Что такое контейнер?

Контейнер — изолированный процесс, внутри которого работает приложение и находятся необходимые ему файлы и зависимости.

Например, на одном сервере можно одновременно запустить:

  • веб-сайт;
  • PostgreSQL;
  • Redis;
  • n8n;
  • Ollama;
  • систему мониторинга;
  • несколько собственных приложений.

Каждый сервис может находиться в отдельном контейнере и иметь собственные настройки, сеть и хранилище.

Docker и виртуальная машина — в чём разница?

На первый взгляд Docker похож на виртуализацию, но контейнер и виртуальная машина устроены по-разному.

Виртуальная машина:

Сервер → Hypervisor → виртуальная машина → собственная ОС → приложение

Docker:

Сервер → операционная система → Docker → контейнер → приложение

Виртуальная машина обычно содержит полноценную гостевую операционную систему со своим ядром. Контейнеры используют ядро хостовой системы и изолируют процессы на уровне операционной системы.

Поэтому контейнеры обычно запускаются быстрее и требуют меньше ресурсов.

Docker Image

Docker Image — это шаблон, на основе которого создаются контейнеры.

Image содержит приложение и необходимые для его запуска компоненты.

Например, образ Nginx можно загрузить командой:

docker pull nginx

После этого из него можно создать контейнер:

docker run -d -p 8080:80 nginx

Параметр -d запускает контейнер в фоновом режиме, а:

-p 8080:80

связывает порт 8080 сервера с портом 80 внутри контейнера.

После запуска веб-сервер будет доступен через порт 8080.

Image и Container

Эти два понятия важно различать.

Image — готовый шаблон приложения.

Container — запущенный экземпляр этого шаблона.

Из одного image можно создать несколько независимых контейнеров.

Docker Hub

Docker Hub — реестр контейнерных образов.

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

Например, вместо ручной установки PostgreSQL можно загрузить готовый образ:

docker pull postgres

Аналогично доступны образы Nginx, Redis, Node.js, Python, Ubuntu и тысяч других приложений.

Основные команды Docker

Посмотреть работающие контейнеры:

docker ps

Посмотреть все контейнеры:

docker ps -a

Запустить контейнер:

docker start container_name

Остановить:

docker stop container_name

Перезапустить:

docker restart container_name

Удалить:

docker rm container_name

Посмотреть логи:

docker logs container_name

Следить за логами в реальном времени:

docker logs -f container_name

Dockerfile

Если готового образа приложения нет или требуется собственная конфигурация, можно создать Dockerfile.

Dockerfile содержит инструкции для создания image.

Простой пример для Node.js:

FROM node:22-alpine

WORKDIR /app

COPY package*.json ./

RUN npm install

COPY . .

CMD ["npm", "start"]

Создать image можно командой:

docker build -t my-app .

После этого приложение запускается как обычный Docker-контейнер.

Docker Compose

Современное приложение часто состоит не из одного сервиса.

Например:

Frontend + Backend + PostgreSQL + Redis

Запускать каждый контейнер вручную неудобно. Для таких случаев используется Docker Compose.

Конфигурация всей системы описывается в файле:

compose.yaml

Простой пример:

services:

  web:
    image: nginx:alpine
    ports:
      - "8080:80"

  redis:
    image: redis:alpine

После этого оба сервиса можно запустить одной командой:

docker compose up -d

Остановить и удалить созданные контейнеры:

docker compose down

Volumes — где хранятся данные?

Контейнеры удобно считать временными. Их можно удалить и создать заново.

Но базы данных, пользовательские файлы и другая важная информация должны сохраняться независимо от контейнера.

Для этого Docker использует volumes.

Например:

services:

  postgres:
    image: postgres
    volumes:
      - postgres_data:/var/lib/postgresql/data

volumes:
  postgres_data:

Теперь данные PostgreSQL находятся в отдельном volume и не исчезнут просто из-за пересоздания контейнера.

Docker Networks

Docker позволяет объединять контейнеры во внутренние сети.

Например:

Web → API → PostgreSQL

При использовании Docker Compose сервисы одной конфигурации могут обращаться друг к другу по именам сервисов.

Например, приложение может обращаться к базе данных по адресу:

postgres:5432

При этом порт PostgreSQL необязательно открывать напрямую в Интернет.

Переменные окружения

Настройки приложений часто передаются через environment variables.

Например:

environment:
  DATABASE_HOST: postgres
  DATABASE_PORT: 5432
  APP_ENV: production

Пароли и API-ключи не следует без необходимости записывать непосредственно в Dockerfile или публиковать в Git-репозитории.

Обновление контейнера

Обычно приложение в Docker обновляется не путём изменения уже работающего контейнера.

Вместо этого загружается новый image и контейнер создаётся заново.

Для Compose-проекта это может выглядеть так:

docker compose pull
docker compose up -d

Docker применит новую конфигурацию и при необходимости пересоздаст контейнеры.

Docker на VPS

Docker особенно удобен на VPS.

На одном Linux-сервере можно разместить множество независимых сервисов:

VPS
│
├── Docker
│   ├── Web App
│   ├── PostgreSQL
│   ├── Redis
│   ├── n8n
│   ├── Ollama
│   └── Monitoring
│
└── Linux

Каждый сервис остаётся логически отделённым от остальных.

Docker и Proxmox

Docker и Proxmox не являются прямыми конкурентами.

Proxmox используется для управления виртуальными машинами и LXC-контейнерами.

Docker используется для контейнеризации приложений.

Один из распространённых вариантов домашнего сервера выглядит так:

Физический сервер → Proxmox → Linux VM → Docker → приложения

Таким образом Proxmox отвечает за инфраструктуру, а Docker — за запуск приложений внутри неё.

Docker и Dokploy

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

Вместо постоянного использования команд Docker пользователь получает веб-интерфейс:

Git → Dokploy → Docker → приложение

Поэтому понимание основных принципов Docker помогает лучше понимать работу Dokploy и других подобных платформ.

Преимущества Docker

  • изоляция приложений;
  • быстрое развёртывание;
  • повторяемая конфигурация;
  • простое обновление сервисов;
  • удобный перенос между серверами;
  • огромная экосистема готовых images;
  • Docker Compose для сложных проектов;
  • подходит для VPS, Home Lab и облачной инфраструктуры.

Что важно помнить?

Docker значительно упрощает управление приложениями, но сам по себе не отменяет необходимость администрирования сервера.

Необходимо обновлять систему и контейнерные образы, контролировать открытые порты, правильно хранить секреты, создавать резервные копии volumes и баз данных и ограничивать права контейнеров.

Особенно осторожно следует относиться к доступу к Docker daemon и файлу docker.sock, поскольку такой доступ фактически предоставляет очень широкие возможности управления Docker-хостом.

Кому пригодится Docker?

  • веб-разработчикам;
  • системным администраторам;
  • DevOps-инженерам;
  • владельцам VPS;
  • пользователям домашних серверов;
  • владельцам Proxmox;
  • тем, кто использует self-hosted приложения.

Итог

Docker стал одним из основных инструментов современной серверной инфраструктуры.

Он позволяет упаковать приложение и его зависимости в image, запустить его в изолированном контейнере и воспроизводить практически одинаковое окружение на разных системах.

Для небольшого домашнего сервера Docker позволяет удобно разместить несколько независимых сервисов. Для разработчика он упрощает перенос приложения от разработки к production. А Docker Compose позволяет описать целую инфраструктуру приложения в одном конфигурационном файле.

После понимания Docker значительно проще разобраться с такими инструментами, как Dokploy, Portainer, Traefik, n8n и множеством других self-hosted сервисов.

Официальный сайт: docker.com

Документация: docs.docker.com

Docker — платформа контейнеризации, позволяющая запускать приложения вместе с их зависимостями в изолированных контейнерах. Docker упрощает установку, перенос, обновление и развёртывание сервисов на компьютерах, VPS и домашних серверах.

© 2026 Denant — Interesting portal. Все права защищены.