Add docker.md instruction

This commit is contained in:
asistent 2026-05-28 05:49:58 +01:00
parent e221002baa
commit d59328bcc3
1 changed files with 113 additions and 0 deletions

113
docker.md Normal file
View File

@ -0,0 +1,113 @@
# Инструкция по 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.*