Add docker.md instruction
This commit is contained in:
parent
e221002baa
commit
d59328bcc3
|
|
@ -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.*
|
||||||
Loading…
Reference in New Issue