Docker и Docker Compose

Подробная Шпаргалка по Docker

Docker и Docker Compose

Docker — это платформа для разработки, доставки и запуска приложений в контейнерах. Контейнеры позволяют упаковать приложение с его зависимостями и запускать его в изолированной среде на любой системе с установленным Docker.

Основные Понятия

  • Образы (Images): Шаблоны для создания контейнеров. Образы состоят из слоев, каждый из которых представляет собой набор файловых изменений.

  • Контейнеры (Containers): Изолированные экземпляры образов, которые можно запускать, останавливать и управлять ими.

  • Dockerfile: Файл с инструкциями для создания пользовательских образов.

  • Docker Hub: Публичный реестр образов Docker, где можно найти и загрузить готовые образы.

Установка Docker

На Linux

curl -fsSL https://get.docker.com | sudo sh
sudo systemctl enable --now docker
sudo usermod -aG docker $(whoami)

На MacOS

Скачайте Docker Desktop с официального сайта и установите его.

Проверка установки

Основные Команды Docker

Работа с Образами

  • Поиск образов в Docker Hub:

    Пример:

  • Загрузка образа:

    Пример:

  • Просмотр локальных образов:

  • Удаление образа:

Работа с Контейнерами

  • Запуск контейнера:

    Пример (запуск Nginx на порту 80):

  • Опции команды docker run:

    • -d: Запуск в фоновом режиме (detached mode).

    • -p: Проброс порта (HOST:CONTAINER).

    • --name: Присвоение имени контейнеру.

    • -v: Монтирование тома (HOST:CONTAINER).

  • Просмотр запущенных контейнеров:

  • Просмотр всех контейнеров (включая остановленные):

  • Остановка контейнера:

  • Запуск остановленного контейнера:

  • Перезапуск контейнера:

  • Удаление контейнера:

  • Удаление всех остановленных контейнеров:

Выполнение команд внутри контейнера

  • Выполнение команды в запущенном контейнере:

    Пример (открыть bash):

  • Запуск контейнера с доступом к терминалу:

Логи и мониторинг

  • Просмотр логов контейнера:

    С выводом в реальном времени:

  • Статистика использования ресурсов:

Управление сетью

  • Просмотр сетей Docker:

  • Создание пользовательской сети:

  • Запуск контейнера в определенной сети:

  • Подключение контейнера к сети:

  • Отключение контейнера от сети:

Работа с томами

  • Просмотр томов:

  • Создание тома:

  • Удаление тома:

  • Монтирование тома при запуске контейнера:

    Пример (монтирование текущей директории):

Создание Собственного Образа с помощью Dockerfile

Структура Dockerfile

Пример Dockerfile для Python приложения

Сборка образа

Пример:

Запуск созданного образа

Docker Compose

Docker Compose используется для определения и запуска многоконтейнерных приложений.

Файл docker-compose.yml

Основные команды Docker Compose

  • Запуск всех сервисов:

    В фоновом режиме:

  • Остановка всех сервисов:

  • Пересборка образов:

  • Просмотр логов:

  • Выполнение команды внутри сервиса:

    Пример:

Docker Registry

  • Вход в Docker Hub:

  • Тегирование образа для отправки в реестр:

    Пример:

  • Отправка образа в Docker Hub:

  • Получение образа из реестра:

Docker Networking

Типы сетей

  • bridge: По умолчанию для контейнеров на одном хосте.

  • host: Контейнер использует сеть хоста.

  • none: Отключенная сеть.

Создание пользовательской мостовой сети

Запуск контейнера в пользовательской сети

Связывание контейнеров

Контейнеры в одной сети могут обращаться друг к другу по имени.

Пример:

  • Запустить Redis:

  • Запустить приложение, которое использует Redis:

В приложении можно обращаться к Redis по имени redis.

Docker Volumes (Тома)

Тома используются для сохранения данных контейнера вне его файловой системы.

Создание тома

Использование тома при запуске контейнера

Монтирование директории хоста

Резервное копирование тома

Восстановление тома из резервной копии

Управление ресурсами

Ограничение использования CPU

Ограничение использования памяти

Полезные Команды

  • Удаление всех остановленных контейнеров:

  • Удаление всех неиспользуемых образов:

  • Удаление всех неиспользуемых данных:

  • Информация о Docker:

  • Список процессов внутри контейнера:

Docker Swarm (Оркестрация)

Docker Swarm позволяет управлять кластером Docker-демонов.

Инициализация Swarm

Добавление узла в Swarm

На основном узле:

Следуйте инструкциям для добавления узла.

Развертывание сервиса в Swarm

Масштабирование сервиса

Просмотр сервисов

Безопасность Docker

  • Запуск только доверенных образов.

  • Регулярное обновление образов и Docker Engine.

  • Использование минимальных базовых образов (например, Alpine).

  • Ограничение привилегий контейнеров:

  • Использование --read-only для создания только чтения файловой системы:

Docker Best Practices

  • Минимизируйте количество слоев в Dockerfile.

  • Используйте .dockerignore для исключения ненужных файлов.

  • Закрепляйте версии зависимостей.

  • Регулярно обновляйте образы.

  • Используйте многоступенчатую сборку (multi-stage builds) для уменьшения размера образа.

Пример многоступенчатой сборки:

Получение Справки

  • Общая справка:

  • Справка по конкретной команде:

    Пример:

Полезные Ресурсы

  • Официальная документация Docker: https://docs.docker.com/

  • Docker Hub: https://hub.docker.com/

  • Play with Docker (песочница): https://labs.play-with-docker.com/

Заключение

Docker является мощным инструментом для контейнеризации приложений, что упрощает их развертывание и масштабирование. Эта шпаргалка призвана помочь вам быстро найти нужные команды и лучшие практики при работе с Docker. Рекомендуется регулярно изучать официальную документацию и практиковаться для более глубокого понимания возможностей Docker.

Last updated