One place for hosting & domains

      Установка и использование Docker Compose в Ubuntu 20.04


      Введение

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

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

      В этом обучающем модуле мы покажем, как установить Docker Compose на сервере под управлением Ubuntu 20.04 и начать использовать этот инструмент.

      Предварительные требования

      Для его выполнения вам потребуется следующее:

      Шаг 1 — Установка Docker Compose

      Чтобы получить самую последнюю стабильную версию Docker Compose, мы загрузим это программное обеспечение из официального репозитория Github.

      Для начала проверьте, какая последняя версия доступна на странице релизов. На момент написания настоящего документа наиболее актуальной стабильной версией является версия 1.26.0.

      Следующая команда загружает версию 1.26.0 и сохраняет исполняемый файл в каталоге /usr/local/bin/docker-compose, в результате чего данное программное обеспечение будет глобально доступно под именем docker-compose:

      • sudo curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

      Затем необходимо задать правильные разрешения, чтобы сделать команду docker-compose исполняемой:

      • sudo chmod +x /usr/local/bin/docker-compose

      Чтобы проверить успешность установки, запустите следующую команду:

      Вывод будет выглядеть следующим образом:

      Output

      docker-compose version 1.26.0, build 8a1c60f6

      Установка Docker Compose успешно выполнена. В следующем разделе мы покажем, как настроить файл docker-compose.yml и запустить контейнерную среду с помощью этого инструмента.

      Шаг 2 — Настройка файла docker-compose.yml

      Чтобы продемонстрировать настройку файла docker-compose.yml и его работу с Docker Compose, мы создадим среду веб-сервера, используя официальный образ Nginx из Docker Hub, публичного реестра Docker. Контейнерная среда будет обслуживать один статичный файл HTML.

      Для начала создайте новый каталог в домашнем каталоге и перейдите в него:

      • mkdir ~/compose-demo
      • cd ~/compose-demo

      Настройте в этом каталоге папку приложения, которая будет выступать в качестве корневого каталога документов для вашей среды Nginx:

      Создайте в предпочитаемом текстовом редакторе новый файл index.html в папке app:

      Вставьте в файл следующее содержимое:

      ~/compose-demo/app/index.html

      <!doctype html>
      <html lang="en">
      <head>
          <meta charset="utf-8">
          <title>Docker Compose Demo</title>
          <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/kognise/water.css@latest/dist/dark.min.css">
      </head>
      <body>
      
          <h1>This is a Docker Compose Demo Page.</h1>
          <p>This content is being served by an Nginx container.</p>
      
      </body>
      </html>
      

      Сохраните и закройте файл после завершения. Если вы использовали nano, нажмите CTRL+X, а затем Y и ENTER для подтверждения.

      Затем создайте файл docker-compose.yml:

      Вставьте в файл docker-compose.yml следующее содержимое:

      docker-compose.yml

      version: '3.7'
      services:
        web:
          image: nginx:alpine
          ports:
            - "8000:80"
          volumes:
            - ./app:/usr/share/nginx/html
      

      Файл docker-compose.yml обычно начинается с определения версии. Оно показывает Docker Compose, какую версию конфигурации мы используем.

      Далее идет блок services, где настраиваются службы, являющиеся частью этой среды. В нашем примере у нас имеется одна служба с именем web. Эта служба использует образ nginx:alpine и настраивает переадресацию портов с помощью директивы ports. Все запросы порта 8000 на компьютере host (система, где вы запускаете Docker Compose) будут перенаправляться в контейнер web на порту 80, где будет работать Nginx.

      Директива volumes создаст общий том для хоста и контейнера. Контейнер будет предоставлен доступ к локальной папке app, а том будет располагаться в каталоге /usr/share/nginx/html внутри контейнера, который заменит корневой каталог документов Nginx по умолчанию.

      Сохраните и закройте файл.

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

      Шаг 3 — Запуск Docker Compose

      Теперь у нас имеется файл docker-compose.yml, и мы можем использовать Docker Compose для запуска нашей среды. Следующая команда загрузит необходимые образы Docker, создаст контейнер для службы web и запустит контейнерную среду в фоновом режиме:

      Docker Compose будет вначале искать заданный образ в локальной системе, и если не найдет его, загрузит его из Docker Hub. Вывод будет выглядеть следующим образом:

      Output

      Creating network "compose-demo_default" with the default driver Pulling web (nginx:alpine)... alpine: Pulling from library/nginx cbdbe7a5bc2a: Pull complete 10c113fb0c77: Pull complete 9ba64393807b: Pull complete c829a9c40ab2: Pull complete 61d685417b2f: Pull complete Digest: sha256:57254039c6313fe8c53f1acbf15657ec9616a813397b74b063e32443427c5502 Status: Downloaded newer image for nginx:alpine Creating compose-demo_web_1 ... done

      Теперь ваша среда запущена в фоновом режиме. Для проверки активности контейнера используйте следующую команду:

      Эта команда покажет вам информацию о работающих контейнерах и их состоянии, а также о действующей переадресации портов:

      Output

      Name Command State Ports ---------------------------------------------------------------------------------- compose-demo_web_1 /docker-entrypoint.sh ngin ... Up 0.0.0.0:8000->80/tcp

      Для получения доступа к демонстрационному приложению введите в браузере адрес localhost:8000, если оно запущено на локальном компьютере, или your_server_domain_or_IP:8000, если оно запущено на удаленном сервере.

      Страница будет выглядеть следующим образом:

      Страница демонстрационного приложения Docker Compose

      Заданный в файле docker-compose.yml общий том синхронизирует файлы в папке app с корневым каталогом документов контейнера. Если вы внесете любые изменения в файл index.html, они будут автоматически отражены в контейнере и появятся в браузере после перезагрузки страницы.

      На следующем шаге вы увидите, как управлять контейнерной средой с помощью команд Docker Compose.

      Шаг 4 — Знакомство с командами Docker Compose

      Мы рассмотрели процедуру настройки файла docker-compose.yml и запуск среды с помощью команды docker-compose up. Теперь мы посмотрим, как использовать команды Docker Compose для управления контейнерной средой и взаимодействия с ней.

      Чтобы посмотреть журналы контейнера Nginx, используйте команду logs:

      Вывод будет выглядеть следующим образом:

      Output

      Attaching to compose-demo_web_1 web_1 | /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration web_1 | /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ web_1 | /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh web_1 | 10-listen-on-ipv6-by-default.sh: Getting the checksum of /etc/nginx/conf.d/default.conf web_1 | 10-listen-on-ipv6-by-default.sh: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf web_1 | /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh web_1 | /docker-entrypoint.sh: Configuration complete; ready for start up web_1 | 172.22.0.1 - - [02/Jun/2020:10:47:13 +0000] "GET / HTTP/1.1" 200 353 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" "-"

      Если вы хотите приостановить работу среды без изменения текущего состояния ваших контейнеров, используйте команду:

      Output

      Pausing compose-demo_web_1 ... done

      Чтобы возобновить работу после приостановки, используйте команду:

      Output

      Unpausing compose-demo_web_1 ... done

      Команда stop останавливает выполнение контейнера, но не уничтожает данные, связанные с вашими контейнерами:

      Output

      Stopping compose-demo_web_1 ... done

      Если вы хотите удалить контейнеры, сети и тома, связанные с контейнерной средой, используйте команду down:

      Output

      Removing compose-demo_web_1 ... done Removing network compose-demo_default

      Обратите внимание, что при этом не будет удален базовый образ, используемый Docker Compose для запуска нашей среды (в нашем примере nginx:alpine). Так, при повторном запуске среды с помощью команды docker-compose up процесс будет намного быстрее, поскольку образ уже находится в вашей системе.

      Если вы хотите удалить из системы базовый образ, используйте команду:

      • docker image rm nginx:alpine

      Output

      Untagged: nginx:alpine Untagged: nginx@sha256:b89a6ccbda39576ad23fd079978c967cecc6b170db6e7ff8a769bf2259a71912 Deleted: sha256:7d0cdcc60a96a5124763fddf5d534d058ad7d0d8d4c3b8be2aefedf4267d0270 Deleted: sha256:05a0eaca15d731e0029a7604ef54f0dda3b736d4e987e6ac87b91ac7aac03ab1 Deleted: sha256:c6bbc4bdac396583641cb44cd35126b2c195be8fe1ac5e6c577c14752bbe9157 Deleted: sha256:35789b1e1a362b0da8392ca7d5759ef08b9a6b7141cc1521570f984dc7905eb6 Deleted: sha256:a3efaa65ec344c882fe5d543a392a54c4ceacd1efd91662d06964211b1be4c08 Deleted: sha256:3e207b409db364b595ba862cdc12be96dcdad8e36c59a03b7b3b61c946a5741a

      Примечание. Чтобы получить более подробное описание команд Docker, ознакомьтесь с нашим руководством по установке и использованию Docker.

      Заключение

      В этом обучающем модуле мы рассмотрели процедуры установки Docker Compose и настройки контейнерной среды на базе образа веб-сервера Nginx. Также мы увидели, как можно управлять этой средой с помощью команд Compose.

      Полный справочник всех доступных команд docker-compose можно найти в официальной документации.



      Source link