Учебник по Docker
Docker — это открытый движок контейнеров приложений, основанный наязыке Goи распространяется с открытым исходным кодом под лицензией Apache 2.0.
Docker позволяет разработчикам упаковывать свои приложения и зависимости в лёгкий, портативный контейнер, который затем можно распространять на любую популярную машину Linux, а также обеспечивает виртуализацию.
Контейнеры полностью используют механизм песочницы, между ними нет интерфейсов (аналогично приложениям iPhone). Что ещё важнее, контейнеры имеют чрезвычайно низкие накладные расходы на производительность.
После версии 17.03 Docker делится на CE (Community Edition) и EE (Enterprise Edition). Мы можем просто использовать Community Edition.
Для кого этот урок?
Этот учебник подходит для инженеров по эксплуатации и backend-разработчиков. С помощью этого учебника вы сможете шаг за шагом научиться использовать Docker.
Знания, необходимые перед чтением этого учебника
Перед чтением этого руководства вам нужно освоить основные команды Linux. Вы можете использоватьруководство по Linuxна этом сайте, чтобы изучить соответствующие команды.
Сценарии применения Docker
Архитектура микросервисов:Каждый сервис независимо контейнеризирован, что упрощает управление и масштабирование.
Конвейер CI/CD:Интегрируется с Jenkins/GitLab CI для обеспечения автоматизированных сборок и тестирования.
Стандартизированная среда разработки:Новые участники могут запустить полный набор зависимых сервисов (таких как базы данных, очереди сообщений) в один клик.
Основы cloud-native:Инструменты оркестрации, такие как Kubernetes, управляют кластерами контейнеров на основе Docker.
Ключевые преимущества
- Кроссплатформенная согласованность:Решает проблему «у меня это работает», обеспечивая единообразие между средами разработки, тестирования и эксплуатации.
- Эффективность использования ресурсов:Контейнеры напрямую совместно используют ядро хоста, устраняя необходимость виртуализировать всю операционную систему, экономя память и процессор.
- Быстрое развертывание:Контейнеры запускаются за секунды, поддерживая автоматическое масштабирование и сокращение.
- Изоляция:Каждый контейнер имеет собственную независимую файловую систему, сеть и пространство процессов.
Основные концепции
- Контейнер:Легковесные экземпляры времени выполнения, содержащие код приложения, среду выполнения и библиотеки зависимостей. Создаются на основе образов, изолированы от других контейнеров, совместно используют ядро ОС хоста (более эффективно, чем виртуальные машины).
- Образ:Шаблон только для чтения, определяющий среду выполнения контейнера (например, операционную систему, конфигурацию программного обеспечения и т. д.). Использует многоуровневое хранилище (Layer) для оптимизации пространства и скорости сборки.
- Dockerfile:Текстовый файл, описывающий, как автоматически собирать образы (например, указание базового образа, установка программного обеспечения, копирование файлов и т. д.).
- Реестр:Платформа для хранения и распространения образов, такая как Docker Hub (официальный публичный репозиторий) или частные репозитории (например, Harbor).
Основные команды
Пример
docker pull nginx
# Запустить контейнер (-d запуск в фоне, -p проброс портов)
docker run -d -p 80:80 nginx
# Список запущенных контейнеров
docker ps
# Собрать образ (на основе Dockerfile в текущем каталоге)
docker build -t my-app .
# Войти в контейнер
docker exec -it <ID контейнера> /bin/bash
Связанные ссылки
Официальный сайт Docker:https://www.docker.com
Исходный код Docker на GitHub:https://github.com/docker
Другие расширения