Intro and Course Overview
00:00:00Быстрый доступ к Docker Essentials Чтобы быстро приступить к работе, мы рассмотрим основные концепции и практические основы Docker. Установка, образы, контейнеры, публичные и частные реестры, Dockerfile, основные команды и тегирование изображений составляют основу. Наглядные пояснения показывают, как Docker подходит для разработки и развертывания, так что полученные знания становятся основой для дальнейшего совершенствования.
Что такое Docker и почему он меняет процесс разработки Docker - это инструмент виртуализации, который упаковывает приложение с его библиотеками, зависимостями, средой выполнения и конфигурацией среды в единый совместно используемый контейнер. Этот пакет стандартизирует запуск приложений, что значительно упрощает разработку и развертывание по сравнению с методами, существовавшими до Docker. В результате получается воспроизводимая среда, которая перемещается вместе с приложением.
Проблемы, связанные с традиционными местными установками Разработчики обычно устанавливали каждую необходимую службу непосредственно в свою операционную систему, следуя пошаговым инструкциям, которые могут привести к ошибкам. Установка в macOS, Windows и Linux отличалась друг от друга, что делало работу команды непоследовательной и утомительной. Управление многими службами и версиями усложняло работу и повышало вероятность конфликтов.
Стандартизированные местные услуги с использованием контейнеров Контейнеры устраняют непосредственную установку ОС, предоставляя изолированные версионные службы, которые запускаются с помощью одной команды Docker в любой операционной системе. Запуск нескольких служб сводится к запуску нескольких контейнеров с одинаковыми командами. Различные версии одной и той же службы могут работать параллельно без конфликтов, что ускоряет настройку среды разработчика.
Трение при развертывании перед Контейнерами Команды поставляли артефакты и текстовые сборники, а сотрудники переустанавливали и настраивали все на серверах. Установки на уровне операционной системы были подвержены ошибкам, часто возникали конфликты версий зависимостей. Отсутствующие или нечеткие инструкции приводили к переписке и задержкам в выпуске.
Автономные артефакты Упрощают работу Образы инкапсулируют код, зависимости и конфигурацию, поэтому для запуска приложений требуется только запустить команду Docker. Вспомогательные службы (например, базы данных) также запускаются в виде контейнеров, что обеспечивает согласованность развертывания. Установка среды выполнения Docker на серверы - это одноразовая задача, которая уменьшает количество ошибок и сложность установки.
Docker против виртуальных машин: архитектура и скорость Docker виртуализирует уровень приложений и повторно использует ядро хоста; виртуальные машины включают в себя как уровень приложений, так и собственное ядро. Благодаря этому отличию образы Docker намного меньше образов виртуальных машин, что позволяет экономить место на диске. Контейнеры запускаются за миллисекунды, в то время как загрузка виртуальных машин часто занимает минуты.
Запуск контейнеров Linux на Windows и Mac Образ на базе Linux не может напрямую использовать ядро Windows или macOS, поэтому совместимость между различными ОС ограничена. Docker Desktop решает эту проблему, запуская облегченный дистрибутив Linux через гипервизор, предоставляя необходимое ядро Linux. Это позволяет запускать контейнеры Linux в Windows и macOS для локальной разработки.
Установка Docker и то, что Вы получаете Воспользуйтесь официальными руководствами для установки Docker Desktop, который объединяет Docker Engine, CLI и клиент с графическим интерфейсом. Запустите службу и управляйте контейнерами и изображениями либо через терминал, либо через графический интерфейс. Проверьте настройки с помощью docker images и docker ps, чтобы просмотреть локальные образы и запущенные контейнеры.
Изображения, контейнеры, реестры и теги Образ - это распространяемый артефакт, содержащий приложение и его среду; контейнер - это запущенный экземпляр этого образа, и из одного образа может быть создано множество контейнеров. В Docker Hub размещаются официальные изображения и изображения сообщества, а создатели технологии и команда Docker обеспечивают наилучшие практики для официальных изображений. Версии изображений определяются с помощью тегов (включая последние версии по умолчанию, если они не указаны). Реестр - это служба хранения (общедоступная или частная), в репозиториях которой хранятся помеченные версии одного изображения приложения.
Извлечение и запуск изображений с помощью командной строки Найдите изображение (например, nginx) и выберите определенный тег, затем загрузите его с помощью docker pull и запустите с помощью docker run. docker run может автоматически извлекать отсутствующее изображение из Docker Hub, поэтому извлекать отдельно необязательно. Используйте -d для отсоединения журналов процесса и docker для просмотра выходных данных; запуск нескольких контейнеров с разными тегами позволяет создавать параллельные версии.
Выставление контейнеров с привязкой к порту Службы прослушивают стандартные порты внутри контейнеров (например, nginx на 80) и по умолчанию изолированы. Сопоставьте порты контейнера с портами хоста с помощью -p host:container (например, 9000:80), чтобы получить к ним доступ через localhost. docker ps отображает сопоставления портов, чтобы вы могли быстро найти способ доступа к каждой службе.
Управление жизненным циклом контейнера и присвоение ему имен docker run каждый раз создает новый контейнер, поэтому остановленные контейнеры по-прежнему существуют и отображаются с помощью docker ps -a. Останавливайте, запускайте или перезапускайте контейнеры по идентификатору и просматривайте журналы в любое время. Присваивайте читаемые имена при создании с помощью --name, затем используйте имена взаимозаменяемо с идентификаторами в командах.
Создание Вашего собственного имиджа и общей картины Файл Dockerfile определяет, как создать образ: выбрать базовый образ, скопировать исходный код, установить WORKDIR, установить зависимости и использовать CMD для команды запуска. Пример: Node.js приложение использует node:19-alpine, копирует package.json и src в /app, запускает npm install и запускает с node src/server.js. Сборка с именем docker build -t:tag . и запустите с помощью docker run -d -p host:container name:tag для проверки приложения. На практике CI создает образ из исходных артефактов, помещает его в частный реестр, а серверы извлекают как изображение приложения, так и зависимые изображения (например, MongoDB) для их совместного запуска.