123/docker.md

4.4 KiB
Raw Permalink Blame History

Инструкция по Docker и Docker Compose

Что такое Docker

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

Основные преимущества

  • Изолированность приложений
  • Портативность (работает везде, где есть Docker)
  • Быстрый деплой и масштабирование
  • Эффективное использование ресурсов

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

# Сборка образа из Dockerfile
docker build -t my-image .

# Запуск контейнера
docker run -d -p 8080:80 --name my-container my-image

# Список запущенных контейнеров
docker ps

# Список всех контейнеров (включая остановленные)
docker ps -a

# Остановка контейнера
docker stop my-container

# Удаление контейнера
docker rm my-container

# Удаление образа
docker rmi my-image

# Просмотр логов контейнера
docker logs -f my-container

Docker Compose

Docker Compose — это инструмент для определения и запуска многоконтейнерных приложений. С помощью YAML-файла вы настраиваете сервисы, сети и тома, а затем запускаете всё одной командой.

Пример docker-compose.yml

version: '3.8'

services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
    volumes:
      - ./html:/usr/share/nginx/html
    restart: unless-stopped

  db:
    image: postgres:15
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
      POSTGRES_DB: mydb
    volumes:
      - db_data:/var/lib/postgresql/data
    restart: unless-stopped

volumes:
  db_data:

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

# Запуск приложения в фоне
docker-compose up -d

# Остановка и удаление контейнеров, сетей, томов
docker-compose down

# Просмотр логов сервисов
docker-compose logs -f

# Масштабирование сервиса (например, 3 инстанса веб)
docker-compose up --scale web=3 -d

# Пересборка образов после изменения Dockerfile
docker-compose up -d --build

# Просмотр запущенных сервисов
docker-compose ps

Лучшие практики

  1. Используйте официальные образы с Docker Hub как базу.
  2. Не храните секреты в образе — используйте переменные окружения или Docker secrets.
  3. Минимизируйте количество слоёв в Dockerfile.
  4. Добавляйте .dockerignore чтобы исключить ненужные файлы из контекста сборки.
  5. Указывайте конкретные версии образов (например, nginx:1.25-alpine вместо nginx:latest).
  6. Для продакшена используйте многоступенчатые сборки (multi-stage builds) чтобы уменьшить размер итогового образа.
  7. Регулярно обновляйте образы и проверяйте уязвимости (например, с помощью docker scan или Trivy).

Полезные ссылки


Инструкция подготовлена для быстрого старта с Docker и Docker Compose.