diff --git a/docker.md b/docker.md new file mode 100644 index 0000000..4257c9c --- /dev/null +++ b/docker.md @@ -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.* \ No newline at end of file