Как установить docker compose debian

Обновлено: 07.07.2024

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

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

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

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

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

  • Сервер Debian 10 с пользователем sudo без привилегий root.
  • Установленный Docker.

Примечание. Хотя в разделе «Предварительные требования» содержатся указания по установке Docker в Debian 10, приведенные в этой статье команды docker должны работать с другими операционными системами, если Docker установлен.

Установка Docker Compose

Хотя Docker Compose можно установить из официальных репозиториев Debian, эти версии немного отстают от последней, и поэтому в данном обучающем руководстве мы будем устанавливать Docker из репозитория GitHub. Следующая команда немного отличается, чем приведенная на странице Выпуски. Мы используем флаг -o для указания выходного файла вместо переадресации вывода. Такой синтаксис позволяет избежать ошибки «отказ в разрешении» при использовании sudo .

Проверьте текущий выпуск и при необходимости обновите его с помощью следующей команды:

После этого мы настроим разрешения:

Затем мы проверим, что установка прошла успешно, с помощью проверки версии:

В результате должна быть выведена установленная нами версия:

Теперь, когда мы установили Docker Compose, мы можем запустить пример «Hello World».

Запуск контейнера с помощью Docker Compose

В общедоступном реестре Docker, Docker Hub, содержится образ Hello World, используемый для демонстрации и тестирования. Это минимальная конфигурация, необходимая для запуска контейнера с помощью Docker: файл YAML, вызывающий один образ. Мы создадим эту минимальную конфигурацию для запуска нашего контейнера hello-world .

Вначале создайте директорию для файла YAML и перейдите в нее:

Затем создайте файл YAML:

Поместите в файл следующие данные, сохраните его и закройте текстовый редактор:

Первая строка файла YAML используется в качестве части имени контейнера. Вторая строка указывает, какой образ используется для создания контейнера. При запуске команды docker-compose up она ищет локальный образ по заданному нами имени hello-world . После этого можно сохранить и закрыть файл.

Вы можете вручную просмотреть образы в нашей системе с помощью команды docker images :

Когда локальные образы отсутствуют, будут отображены только заголовки столбцов:

Оставаясь в директории

/hello-world , запустите следующую команду:

Если при первом запуске этой команды локальный образ с именем hello-world отсутствует, Docker Compose извлечет его из публичного репозитория на Docker Hub:

После загрузки образа docker-compose создает контейнер, помещает в него и запускает программу hello, что, в свою очередь, подтверждает, что установка, выполнена успешно:

Затем программа отображает объяснение того, что она сделала:

Контейнеры Docker продолжают работать, пока команда остается активной, поэтому после завершения работы hello контейнер останавливается. Соответственно этому, когда мы смотрим активные процессы, заголовки столбцов будут отображаться, но контейнер hello-world не будет отображаться в списке, потому что он не запущен:

Чтобы посмотреть информацию о контейнере, которая потребуется на следующем шаге, используйте флаг -a . Эта команда выводит все контейнеры, а не только активные:

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

Удаление образа (необязательно)

Чтобы избежать необязательного использования дискового пространства, мы удалим локальный образ. Для этого нам потребуется удалить все контейнеры, которые содержат образ, с помощью команды docker rm , после которой следует CONTAINER ID или NAME . В следующем примере мы используем идентификатор CONTAINER ID из команды docker ps -a , которую мы только что запускали. Обязательно замените идентификатор на идентификатор вашего контейнера:

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

Заключение

Вы установили Docker Compose в Debian 10, протестировали установку на примере приложения Hello World и удалили тестовый образ и контейнер.

В этом руководстве будет рассмотрен процесс установки последней версии Docker Compose на Debian 9. Мы также рассмотрим основные концепции и команды Docker Compose.

Подготовка

Прежде чем продолжить изучение этого руководства, убедитесь, что вы выполнили следующие предварительные требования:

Установите Docker Compose в Debian

На момент написания этой статьи последней стабильной версией Docker Compose была версия 1.23.1 . Перед загрузкой двоичного файла Compose посетите страницу выпуска репозитория Compose на GitHub и проверьте, доступна ли для загрузки новая версия.

Выполните следующие шаги, чтобы установить последнюю версию Docker Compose в Debian 9:

Начните с загрузки двоичного файла Docker Compose в каталог /usr/local/bin используя следующую команду curl :

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

Проверьте установку, набрав:

Результат будет выглядеть примерно так:

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

В этом разделе мы покажем, как использовать Docker Compose для управления стеком WordPress на вашем компьютере Debian 9.

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

Откройте текстовый редактор и создайте файл с именем docker-compose.yml в каталоге проекта:

Вставьте следующий контент:

Итак, что делает приведенный выше код?

В первой строке мы указываем версию файла Compose . Существует несколько различных версий формата файла Compose с поддержкой определенных выпусков Docker.

Далее мы определяем две службы: db и wordpress . Каждая служба запускает один образ и создает отдельный контейнер при запуске docker-compose.

  • Использует образ mysql:5.7 . Если образ отсутствует в вашей системе, Compose извлечет его из общедоступного репозитория Docker Hub.
  • Использует политику перезапуска always которая указывает контейнеру всегда перезапускаться.
  • Создает именованный том db_data для сохранения базы данных.
  • Определяет переменные среды для образа mysql:5.7 .
  • Использует изображение wordpress . Если образ отсутствует в вашей системе, Compose извлечет его из общедоступного репозитория Docker Hub.
  • Использует политику перезапуска always которая указывает контейнеру всегда перезапускаться.
  • Устанавливает каталог wp_data на хосте в /var/lib/mysql внутри контейнера.
  • Перенаправляет открытый порт 80 на контейнере на порт 8080 на хост-машине.
  • Определяет переменные среды для изображения wordpress .
  • Инструкция depends_on определяет зависимость между двумя службами. В этом примере db будет запущен раньше wordpress .

Из каталога проекта запустите приложение WordPress, выполнив следующую команду:

Результат должен выглядеть примерно так:

Compose извлечет оба изображения, запустит два контейнера и создаст каталог wp_data каталоге вашего проекта.

На данный момент приложение WordPress запущено и работает, и вы можете начать работу над своей темой или плагином.

Чтобы остановить создание, нажмите CTRL+C

Вы также можете запустить Compose в автономном режиме, передав флаг -d .

Чтобы проверить запущенные службы, используйте опцию ps :

Когда Compose работает в автономном режиме, чтобы остановить использование служб:

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

Передача переключателя --volumes также удалит тома данных:

Удаление Docker Compose

Если вам нужно удалить Docker Compose, вы можете просто удалить двоичный файл, набрав:

Выводы

Вы узнали, как установить и использовать Docker Compose в Debian 9. Если у вас есть какие-либо вопросы, оставьте комментарий ниже.

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

Сообщество Docker использовало для решения этой проблемы инструмент Fig, который позволяет использовать единый YAML-файл для планирования и организации работы контейнеров и конфигураций Docker. Но со временем команда Docker решила разработать собственное средство, основанное на исходном коде Fig. Так появился Docker Compose – инструмент для настройки и запуска мультиконтейнерных приложений Docker, а также для управления ими.

Данный мануал поможет установить Docker Compose на сервер Debian 10.

Требования

  • Сервер Debian 10, настроенный по этому мануалу.
  • Предварительно установленная система Docker (инструкции можно найти здесь).

Примечание: Мануал предназначен для Debian 10, однако команда docker работает одинаково на всех дистрибутивах.

1: Установка Docker Compose

Установить Docker Compose можно из официального репозитория Debian, однако тогда вы получите немного устаревшую версию. Потому лучше установить Docker Compose из GitHub-репозитория Docker.

Ссылка в приведённой ниже команде несколько отличается от ссылки, предложенной на странице релизов. Флаг –о позволяет задать файл, в который нужно поместить вывод. Такой синтаксис устраняет ошибки, связанные с конфликтом привилегий при использовании sudo.

Проверьте текущий релиз и при необходимости обновите ссылку в команде.

Установите права доступа:

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

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

docker-compose --version
docker-compose version 1.25.3, build d4d1b42b

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

2: Запуск контейнера при помощи Docker Compose

Официальный открытый реестр Docker, Docker Hub, предлагает образ простого приложения Hello World. Он представляет минимальную конфигурацию (YAML-файл), необходимую для запуска контейнера в Docker Compose. Этот образ можно использовать, чтобы протестировать Docker Compose.

Создайте каталог для YAML-файла и перейдите в него:

mkdir hello-world
cd hello-world

Поместите в файл следующий код, затем сохраните и закройте его:

my-test:
image: hello-world

Первая строка будет использоваться как часть имени контейнера. Вторая строка указывает, какой образ использовать для создания контейнера. Команда docker-compose up будет искать в локальных образах образ hello-world.

Список локальных образов можно просмотреть вручную:

образов нет, команда вернёт только заголовки столбцов:

REPOSITORY TAG IMAGE ID CREATED SIZE

/hello-world выполните следующую команду, чтобы создать контейнер:

Если при первом запуске команда не обнаружит нужного образа на локальной машине, образ будет загружен из официального репозитория Docker Hub.

Pulling my-test (hello-world:).
latest: Pulling from library/hello-world
9db2ca6ccae0: Pull complete
Digest: sha256:4b8ff392a12ed9ea17784bd3c9a8b1fa3299cac44aca35a85c90c5e3c7afacdc
Status: Downloaded newer image for hello-world:latest
. . .

Загрузив образ, docker-compose создаст контейнер и запустит программу hello-world. Если всё выполнено верно, на экране появится такой вывод:

. . .
Creating helloworld_my-test_1.
Attaching to helloworld_my-test_1
my-test_1 |
my-test_1 | Hello from Docker.
my-test_1 | This message shows that your installation appears to be working correctly.
my-test_1 |
. . .

Затем команда предоставит описание своих действий:

To generate this message, Docker took the following steps:

my-test_1 | 1. The Docker client contacted the Docker daemon.
my-test_1 | 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
my-test_1 | (amd64)
my-test_1 | 3. The Docker daemon created a new container from that image which runs the
my-test_1 | executable that produces the output you are currently reading.
my-test_1 | 4. The Docker daemon streamed that output to the Docker client, which sent it
my-test_1 | to your terminal.

  • Клиент Docker подключается к демону Docker.
  • Демон загружает образ hello-world с Docker Hub.
  • Демон создаёт из этого образа новый контейнер.
  • Демон передаёт полученный вывод клиенту Docker, а он возвращает его в терминал.

Контейнер Docker работает до тех пор, пока работает программа, запущенная в нём. Если вы остановите программу hello, контейнер тоже остановится. Запросите список активных контейнеров; программы hello-world среди них не будет.

docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

Чтобы просмотреть все существующие контейнеры, используйте флаг –а:

docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

06069fd5ca23 hello-world "/hello" 35 minutes ago Exited (0) 35 minutes ago drunk_payne

3: Удаление образа (опционально)

Чтобы не тратить дисковое пространство, можно удалить локальный образ. Для этого нужно удалить все связанные с ним контейнеры с помощью команды docker rm; при этом нужно указать имя или ID контейнера (его можно найти в выводе docker ps –a).

docker rm 06069fd5ca23

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

docker rmi hello-world

Заключение

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

Данное руководство охватывает только основы работы с Docker Compose. К сожалению, оно не рассматривает одну из самых важных функций Docker Compose – управление группами контейнеров.

Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в среде виртуализации на уровне операционной системы. Позволяет «упаковать» приложение со всем его окружением и зависимостями в контейнер, который может быть перенесён на любую Linux-систему с поддержкой cgroups в ядре, а также предоставляет среду по управлению контейнерами.

file

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

Особенности Compose, которые делают его эффективным:

  • Несколько изолированных сред на одном хосте
  • Защита данных тома при создании контейнеров
  • Пересоздаются только измененные контейнеры
  • Перемещение переменных между средами

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

Установка Docker Compose

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

Проверим текущую версию и при необходимости обновим ее с помощью следующей команды:

Далее настроим разрешения:

Затем мы проверим, что установка прошла успешно:

Вы увидите подобный вывод:

Запуск контейнера с помощью Docker Compose

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

Создадим директорию для файла YAML:

Далее создадим в этой директории файл YAML:

Поместите в файл следующие данные, сохраните его и закройте текстовый редактор:

Первая строка файла YAML используется в качестве части имени контейнера.
Вторая строка указывает, какой образ используется для создания контейнера.
При запуске команды docker-compose up она будет искать локальный образ по указанному имени, т.е. hello-world.

Далее можно просмотреть образы в нашей системе с помощью команды docker images:

Когда локальные образы отсутствуют, будут отображены только заголовки столбцов:

Далее, находясь в директории

/hello-world, мы выполним следующую команду:

После загрузки образа docker-compose создает контейнер, помещает в него и запускает программу hello:

Контейнеры Docker продолжают работать, пока команда остается активной, поэтому после завершения работы hello контейнер останавливается. Следовательно, когда мы просматриваем активные процессы, заголовки столбцов будут появляться, но контейнер hello-world не будет появляться в списке, поскольку он не запущен.

Мы можем просмотреть информацию контейнера, используя флаг -a, с помощью которого можно отобразить все контейнеры, а не только активные:

Читайте также: