Учебное пособие по Docker Compose: расширенный Docker стал проще

Docker — это востребованная технология DevOps, востребованная в технологической индустрии. Этот мощный инструмент позволяет настраивать и развертывать приложения с использованием контейнеров. Благодаря согласованной среде Docker жизненный цикл разработки приложений становится простым и плавным. Docker Compose, более продвинутый инструмент Docker, можно использовать для упрощения рабочего процесса.

В этой статье мы освежим ваши знания о Docker и покажем, как начать работу с Docker Compose. Для наиболее успешной работы с этой статьей у вас уже должен быть некоторый опыт работы с Docker.

Если вы новичок в DevOps, ознакомьтесь с нашим руководством для начинающих по Docker и Kubernetes, прежде чем продолжить это руководство.

Сегодня мы рассмотрим:

  • Краткий обзор Docker
  • Основы Docker
  • Начало работы с Docker Compose
  • Что нужно узнать дальше
  • Подведение итогов и ресурсы

Изучите расширенные возможности Docker и Docker Compose.

Изучите основы Docker на практике.

Работа с контейнерами: Docker и Docker Compose

Краткий обзор Docker

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

Этот инструмент позволяет разным разработчикам работать над одним и тем же проектом в одной среде без каких-либо зависимостей или ОС. вопросы. Docker похож на виртуальную машину, но Docker позволяет приложениям получать доступ к одному и тому же ядру Linux.

Docker предлагает множество преимуществ для разработчиков и команд DevOps. Docker…

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

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

Эти две технологии предназначены для совместной работы и развертывания приложений. легкий ветерок.

Основы Docker

Прежде чем углубляться в расширенные концепции Docker, такие как Docker Compose, мы хотим обновить основы Docker в целом. Давайте определим и исследуем основы Docker.

Архитектура Docker

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

Второй уровень — это ОС хоста, которая является базовой машиной (то есть Windows или Linux). Далее идет Docker Engine, который мы используем для запуска операционной системы. Выше находятся приложения, которые работают как контейнеры Docker. Эти объекты Docker состоят из изображений и контейнеров.

Контейнеры и изображения

Базовая структура Docker основана на изображениях. и контейнеры . Думайте об изображениях и контейнерах как о двух разных состояниях одной и той же базовой концепции. Контейнер подобен объекту, а изображение — его классу.

Думайте о контейнере как об изолированной системе, которая содержит все необходимое для запуска определенного приложения. Это экземпляр изображения, имитирующего требуемую среду. Ниже приведен пример команды при запуске контейнера Docker в ubuntu:

  docker run -i -t ubuntu/bin/bash  

С другой стороны, изображения используются для запуска контейнеров. Из запущенных контейнеров мы можем получить изображения, которые можно составить вместе, чтобы сформировать системно-независимый способ упаковки приложений.

Образы могут быть предварительно созданы, извлечены из реестров, созданы из уже существующих. , или объединены вместе через общую сеть.

Dockerfiles

Dockerfiles — это то, как мы помещаем наше приложение в контейнеры или как мы создаем новый контейнер из уже готовое изображение и добавляем настраиваемую логику для запуска нашего приложения. Из Dockerfile мы используем команду Docker build для создания образа.

Думайте о Dockerfile как о текстовом документе, который содержит команды, которые мы вызываем в командной строке для создания образа.

Ниже приведен пример файла Docker:

  FROM python: 3 WORKDIR/usr/src/app COPY requirements.txt ./RUN pip install -  no-cache-dir -r requirements.txt КОПИРОВАТЬ.  .  CMD ["python", "./your-daemon-or-script.py"]  

Layers

Dockerfile работает послойно. Это строительные блоки Docker. Первый уровень начинается с FROMkeyword и определяет, какое предварительно созданное изображение мы будем использовать для создания изображения. Затем мы можем определить разрешения пользователей и сценарии запуска.

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

Docker Hub

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

Вы можете сделать это с помощью команды docker build или тегов docker для создания идентификатора изображения. Вы можете опубликовать изображение в Docker Hub с помощью следующих команд:

  docker logindocker push learnbook/webserver  

Это было просто обзор основ Docker, прежде чем мы перейдем к продвинутым концепциям. Имейте в виду, что Docker — это гораздо больше, чем мы обсуждали выше.

Начало работы с Docker Compose

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

Подумайте о docker- compose как автоматизированный многоконтейнерный рабочий процесс. Compose — отличный инструмент для разработки, тестирования, рабочих процессов CI и промежуточных сред. Согласно документации Docker, наиболее популярными функциями Docker Compose являются:

  • Несколько изолированных сред на одном хосте
  • Сохранение данных тома, когда контейнеры создаются
  • Только воссоздайте контейнеры, которые изменились.
  • Переменные и перемещение композиции между средами
  • Управляйте несколькими контейнерами, которые работают вместе

Нравится статья? Прокрутите вниз, чтобы подписаться на нашу бесплатную новостную рассылку, выходящую два раза в месяц.

Как использовать и установить Docker Compose

Compose использует Docker Engine, поэтому на вашем устройстве должен быть установлен Docker Engine. Вы можете запустить Compose в Windows, Mac и 64-битном Linux. Установить Docker Compose на самом деле довольно просто.

В настольных системах, таких как Docker Desktop для Mac и Windows, Docker Compose уже включен. Никаких дополнительных действий не требуется. В системах Linux вам необходимо:

  1. Установить Docker Engine
  2. Выполнить следующую команду, чтобы загрузить Docker Compose
  sudo curl -L "https://github.com/docker/compose/releases/download/1.26. 2/docker-compose - $ (uname -s) - $ (uname -m) "-o/usr/local/bin/docker-compose  
  1. Примените разрешения к двоичному файлу, например:
  sudo chmod + x/usr/local/bin/docker-compose  
  1. Протестируйте установку, чтобы убедиться, что она работает правильно
  $ docker-compose --versiondocker-compose version 1.26.2, build  1110ad01  

Независимо от того, как вы выбрали его установку, после загрузки и правильной работы Docker Compose вы можете начать использовать его со своими файлами Docker. Этот процесс требует трех основных шагов:

  1. Определите среду вашего приложения с помощью файла Docker. Таким образом, его можно воспроизвести.
  2. Определите службы для вашего приложения в docker-compose.yml . Таким образом, они могут работать в изолированной среде.
  3. Запустите docker-compose , чтобы запустить приложение.

Вы можете легко добавить Docker Compose в уже существующий проект. Если у вас уже есть файлы Dockerfiles, добавить файлы Docker Compose, открыв палитру команд. Используйте команду Docker: Docker Compose Files to the Workspace и, при повышении, выберите Dockerfiles, которые вы хотите включить.

Вы также можете добавить файлы Docker Compose в рабочее пространство, когда вы добавляете файл Dockerfile. Точно так же откройте палитру команд и используйте команду Docker: Добавить файлы Docker в рабочую область .

Затем вас спросят, хотите ли вы добавить какой-либо Docker Compose файлы. В обоих случаях расширение Compose добавит файл docker-compose.yml в вашу рабочую область.

Файловая структура Docker Compose

Теперь, когда мы знаем, как загрузить Docker Compose, нам нужно понять как работают файлы Compose. На самом деле это проще, чем кажется. Короче говоря, файлы Docker Compose работают, применяя несколько команд, объявленных в одном файле конфигурации docker-compose.yml .

Базовая структура Docker Compose Файл YAML выглядит так:

 версия: 'X'services: web: build:.  порты: - "5000: 5000" тома: -.:/code redis: image: redis 
путь>

Теперь давайте посмотрим на реальном примере файла Docker Compose и разбейте его пошагово, чтобы лучше все это понять. Обратите внимание, что все предложения и ключевые слова в этом примере являются обычно используемыми ключевыми словами и отраслевыми стандартами.

С их помощью вы можете начать рабочий процесс разработки. Есть несколько более сложных ключевых слов, которые вы можете использовать в рабочей среде, но пока давайте начнем с необходимых предложений..

 версия  : '3'services: web: # Путь к dockerfile.  # '.'  представляет текущий каталог, в котором находится # docker-compose.yml.  строить: .  # Сопоставление порта контейнера с портами хоста: - "5000: 5000" # Смонтировать тома тома: - "/usercode/:/code" # Связать контейнер базы данных с контейнером приложения # для доступности.  links: - "database: backenddb" database: # изображение для загрузки из docker hub image: mysql/mysql-server: 5.7 # Переменные среды для сценария запуска # контейнер будет использовать эти переменные # для запуска контейнера с этими определяющими переменными.  environment: - "MYSQL_ROOT_PASSWORD = root" - "MYSQL_USER = testuser" - "MYSQL_PASSWORD = admin123" - "MYSQL_DATABASE = backend" # Смонтируйте файл init.sql для автоматического запуска # и создания таблиц для нас.  # все в папке docker-entrypoint-initdb.d # выполняется, как только контейнер запущен.  тома: - "/usercode/db/init.sql:/docker-entrypoint-initdb.d/init.sql" 

  • версия '3' : это означает, что мы используем версию 3 Docker Compose, и Docker будет предоставить соответствующие функции. На момент написания этой статьи последняя версия Compose — 3.7.

  • services : В этом разделе описаны все различные контейнеры, которые мы создадим. В нашем примере у нас есть две службы: веб и база данных.

  • web : Это название нашей службы приложений Flask. Docker Compose создаст контейнеры с указанным нами именем.

  • build : Это указывает расположение нашего Dockerfile, а . представляет каталог, в котором находится файл docker-compose.yml .

  • ports : используется для сопоставления портов контейнера с хост-компьютером.

  • тома : аналогично параметру -v для монтирования дисков. в Докере. В этом примере мы прикрепляем каталог файлов кода к каталогу ./code контейнеров. Таким образом, нам не придется перестраивать изображения, если будут внесены изменения.

  • links : Это свяжет одну службу с другой. Для сети моста мы должны указать, какой контейнер должен быть доступен для какого контейнера с помощью ссылок.

  • image : Если у нас нет Dockerfile и мы хотим запустить службу с использованием предварительно созданного образа, мы указываем расположение образа с помощью предложения image .. Compose создаст контейнер из этого изображения.

  • environment : Предложение позволяет нам, чтобы настроить переменную среды в контейнере. Это то же самое, что и аргумент -e в Docker при запуске контейнера.

Поздравляем! Теперь вы немного знаете о Docker Compose и о необходимых частях, которые вам понадобятся для начала рабочего процесса.

Продолжайте обучение.

Изучите расширенные возможности Docker и Docker Compose, не просматривая видео или документацию. Текстовые курсы Educative просты в использовании и содержат среду программирования в реальном времени, что делает обучение быстрым и эффективным.

Работа с контейнерами: Docker и Docker Compose

Команды Docker Compose

Теперь, когда мы знаем, как создать файл docker-compose , давайте рассмотрим наиболее распространенные команды Docker Compose, которые мы можем использовать с нашими файлы. Имейте в виду, что мы будем обсуждать только наиболее часто используемые команды.

docker-compose : Каждая команда Compose начинается с этой команды. Вы также можете использовать docker-compose --help для предоставления дополнительной информации об аргументах и ​​деталях реализации.

  $ docker-compose  --help Определение и запуск многоконтейнерных приложений с помощью Docker.  

сборка docker-compose : Эта команда создает изображения в файле docker-compose.yml . Задача команды build — подготовить изображения для создания контейнеров, поэтому, если служба использует предварительно созданный образ, она пропустит эту службу.

   $ docker-compose builddatabase использует образ, пропуская Построение webStep 1/11: FROM python: 3.9-rc-buster ---> 2e0edf7d3a8aStep 2/11: RUN apt-get update && apt-get install -y docker  .io  

docker-compose images : Эта команда выведет список изображений, которые вы построен с использованием текущего файла docker-compose .

  $ docker-compose images Размер идентификатора изображения тега репозитория контейнера -----  --------------------------------------------------  ------------------------------- 7001788f31a9_docker_database_1 mysql/mysql-server 5,7 2a6c84ecfcb2 333,9 МБdocker_database_1 mysql/mysql-server 5,7 2a6c84ecfcb2 333,9 МБdocker_web_1    d986d824dae4 953 МБ  

docker-compose stop : Эта команда останавливает запущенные контейнеры указанных служб.

  $ docker-compose stopStopping docker_web_1 ... doneОстановка docker_database_1 ... done  

docker-compose run : Это похоже на команду docker run .. Он создаст контейнеры из образов, созданных для служб, упомянутых в файле компоновки.

  $ docker-compose run webStarting 7001788f31a9_docker_database_1 ... done * Обслуживание Flask app "app.py"  (ленивая загрузка) * Среда: разработка * Режим отладки: включен * Запуск http://0.0.0.0:5000/(для выхода нажмите CTRL + C) * Перезапуск со статистикой * Отладчик активен!  * PIN-код отладчика: 116-917-688  

docker-compose up : Эта команда выполняет работу команд docker-compose build и docker-compose run . Он создает образы, если они не расположены локально, и запускает контейнеры. Если образы уже созданы, он будет разветвлять контейнер напрямую.

  $ docker-compose upСоздание docker_database_1 ... doneСоздание docker_web_1 ... doneПрисоединение к docker_database_1, docker_web_1   

docker-compose ps : Эта команда выводит список всех контейнеров в текущем файл docker-compose . Затем они могут быть запущены или остановлены.

  $ docker-compose ps Имя Команда Состояние Порты ------------------  --------------------------------------------------  ------------- docker_database_1/entrypoint.sh mysqld Up (исправно) 3306/tcp, 33060/tcp docker_web_1 flask run Up 0.0.0.0:5000->5000/tcp $ docker-compose ps Имя  Порты состояния команды -----------------------------------------------  ----------- docker_database_1/entrypoint.sh mysqld Выход 0 docker_web_1 flask run Выход 0  

docker-compose down : эта команда аналогична команде docker system prune . Однако в Compose он останавливает все службы и очищает контейнеры, сети и образы.

  $ docker-compose down Удаление docker_web_1 ... doneУдаление docker_database_1 ... doneУдаление  network docker_default (django-tuts) Venkateshs-MacBook-Air: Docker venkateshachintalwar $ docker-compose imagesContainer Repository Tag Image Id Size -------------------------  --------------------- (django-tuts) Venkateshs-MacBook-Air: Docker venkateshachintalwar $ docker-compose psName Порты состояния команды --------  ----------------------  

Поздравляю! Вы узнали большинство основных команд Docker Compose. Зачем останавливаться на достигнутом? Изучите документацию по другим командам и продолжайте учиться!

Что изучать дальше

Я надеюсь, что это познакомило вас с Docker Compose и всем, что он может предложить. Еще многое предстоит изучить и научиться, чтобы стать настоящим мастером Docker Compose. Когда вы научитесь создавать файлы docker-compose и работать с необходимыми командами, вы можете перейти к следующим достижениям:

  • Работа с несколькими Файлы Docker в Compose (общие для микросервисов)
  • Переменные среды Docker Compose (файлы .env )
  • Docker Swarm (для масштабирования и мониторинг кластеров)
  • Автоматическое развертывание с помощью Docker Stack
  • и др.

Продвинутый курс Docker от Educative Работа с контейнерами: Docker и Docker Compose — идеальное место для изучения этих и других концепций. Вы не только освежитесь в основах Docker, но и перейдете к продвинутым концепциям, таким как подключение к контейнеру базы данных и практические занятия с Docker Compose.

В конце концов, вы Я даже узнаю, как отслеживать кластеры и масштабировать службы Docker с помощью Swarm. Начните свою карьеру и станьте востребованным разработчиком Docker!

Читать далее

  • Учебное пособие по Kubernetes: начало работы с оркестровкой контейнеров
  • Начало работы с Docker и Kubernetes: руководство для начинающих
  • Почему (и когда) вам следует использовать Kubernetes
Оцените статью
nanomode.ru
Добавить комментарий