Docker и Docker Compose: от нуля до первого контейнера

Контейнеризация стала стандартом разработки и деплоя. Docker позволяет упаковать приложение вместе со всеми зависимостями в изолированный образ, который одинаково работает на ноутбуке разработчика и на production-сервере. В этой статье мы пройдём путь от установки до запуска многоконтейнерного приложения с базой данных.

Установка Docker в Ubuntu и Linux Mint

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

sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" | sudo tee /etc/apt/sources.list.d/docker.list
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Добавьте своего пользователя в группу docker, чтобы не использовать sudo при каждом вызове: sudo usermod -aG docker $USER, затем перелогиньтесь.

Первый контейнер

Проверьте установку запуском тестового образа: docker run --rm hello-world. Если видите приветственное сообщение, движок работает. Теперь запустим веб-сервер nginx и пробросим порт.

docker run -d --name web -p 8080:80 nginx:alpine
curl -I http://localhost:8080

Docker Compose для реального проекта

Compose описывает многоконтейнерное приложение в одном YAML-файле. Пример для веб-приложения с PostgreSQL:

services:
  app:
    image: myapp:latest
    ports:
      - "3000:3000"
    environment:
      DATABASE_URL: postgres://user:pass@db:5432/app
    depends_on:
      - db
  db:
    image: postgres:16-alpine
    volumes:
      - pgdata:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: pass
      POSTGRES_DB: app
volumes:
  pgdata:

Запуск: docker compose up -d. Остановка: docker compose down. Данные базы сохранятся в именованном томе pgdata.

Полезные команды

  • docker ps -a — список всех контейнеров.
  • docker logs -f web — поток логов.
  • docker exec -it web sh — войти в контейнер.
  • docker system prune -a — очистка неиспользуемых образов и кэша (осторожно).

Начните с простых сценариев: поднимите базу данных для локальной разработки или тестовый веб-сервер. Когда освоитесь, переходите к собственным Dockerfile и CI/CD-пайплайнам.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.