123/docker.md

113 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Инструкция по Docker и Docker Compose
## Что такое Docker
Docker — это платформа для разработки, доставки и запуска приложений в контейнерах. Контейнер — это легковесный, изолированный исполняемый пакет, который включает всё необходимое для работы программы: код, runtime, системные инструменты, библиотеки и настройки.
### Основные преимущества
- Изолированность приложений
- Портативность (работает везде, где есть Docker)
- Быстрый деплой и масштабирование
- Эффективное использование ресурсов
## Основные команды Docker
```bash
# Сборка образа из 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
```yaml
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
```bash
# Запуск приложения в фоне
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: 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.*