Установка Docker Compose в Debian 10
Debian | Комментировать запись
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 curl -L https://github.com/docker/compose/releases/download/1.25.3/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
Установите права доступа:
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
Создайте YAML-файл:
nano docker-compose.yml
Поместите в файл следующий код, затем сохраните и закройте его:
my-test:
image: hello-world
Первая строка будет использоваться как часть имени контейнера. Вторая строка указывает, какой образ использовать для создания контейнера. Команда docker-compose up будет искать в локальных образах образ hello-world.
Список локальных образов можно просмотреть вручную:
docker images
образов нет, команда вернёт только заголовки столбцов:
REPOSITORY TAG IMAGE ID CREATED SIZE
В каталоге ~/hello-world выполните следующую команду, чтобы создать контейнер:
docker-compose up
Если при первом запуске команда не обнаружит нужного образа на локальной машине, образ будет загружен из официального репозитория 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 – управление группами контейнеров.
Читайте также:
- Установка WordPress с помощью Docker Compose: сервисы и SSL-сертификаты
- Установка WordPress с помощью Docker Compose: отладка сервисов и веб-сервера