Убунту 22.04

Введение

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

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

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

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

Чтобы следовать этой статье, вам понадобится:

  • Доступ к локальному компьютеру Ubuntu 22.04 или серверу разработки от имени пользователя без полномочий root с привилегиями sudo. Если вы используете удаленный сервер, желательно установить активный брандмауэр. Чтобы настроить их, обратитесь к нашему Руководству по первоначальной настройке сервера для Ubuntu 22.04.
  • Docker установлен на вашем сервере или локальном компьютере, следуя Steps 1 and 2 статьи «Как установить и использовать Docker в Ubuntu 22.04».

Note: Начиная с Docker Compose v2, Docker перешел на использование команды плагина CLI compose , а не на исходную docker-compose , как описано в нашей предыдущей версии этого руководства для Ubuntu 20.04. Хотя установка отличается, в целом фактическое использование включает удаление дефиса из вызовов docker-compose , чтобы стать docker compose . Для получения полной информации о совместимости ознакомьтесь с официальной документацией Docker по совместимости команд между новым compose и старым docker-compose .

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

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

Сначала подтвердите последнюю версию, доступную на странице выпусков. На момент написания этой статьи самая последняя стабильная версия — 2.3.3 .

Используйте следующую команду для загрузки:

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

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

Вы увидите вывод, похожий на этот:

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

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

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

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

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

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

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

~/compose-demo/app/index.html

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

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

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

docker-compose.yml

Файл docker-compose.yml обычно начинается с определения version . Это сообщит 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. Вы увидите такой вывод:

Note: Если вы столкнулись с ошибкой разрешения, касающейся сокета Docker, это означает, что вы пропустили шаг 2 инструкции «Как установить и использовать Docker в Ubuntu 22.04». Вернувшись назад и выполнив этот шаг, вы получите разрешения на запуск команд Docker без sudo .

Теперь ваша среда запущена и работает в фоновом режиме. Чтобы убедиться, что контейнер активен, вы можете запустить:

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

Теперь вы можете получить доступ к демонстрационному приложению, указав в браузере либо 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 :

Вы увидите вывод, похожий на этот:

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

Чтобы возобновить выполнение после паузы:

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

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

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

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

Note . Более подробную информацию о командах Docker можно найти в нашем руководстве «Как установить и использовать Docker».

Заключение

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

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