4.4 KiB
4.4 KiB
Инструкция по 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
Лучшие практики
- Используйте официальные образы с Docker Hub как базу.
- Не храните секреты в образе — используйте переменные окружения или Docker secrets.
- Минимизируйте количество слоёв в Dockerfile.
- Добавляйте .dockerignore чтобы исключить ненужные файлы из контекста сборки.
- Указывайте конкретные версии образов (например,
nginx:1.25-alpineвместоnginx:latest). - Для продакшена используйте многоступенчатые сборки (multi-stage builds) чтобы уменьшить размер итогового образа.
- Регулярно обновляйте образы и проверяйте уязвимости (например, с помощью
docker scanили Trivy).
Полезные ссылки
- Официальная документация Docker: https://docs.docker.com/
- Docker Compose reference: https://docs.docker.com/compose/
- Лучшие практики написания Dockerfile: https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
- Примеры приложений: https://github.com/docker/awesome-compose
Инструкция подготовлена для быстрого старта с Docker и Docker Compose.