Как установить Docker Compose в Debian 9

Вступление

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

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

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

Предпосылки

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

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

Хотя мы можем установить Docker Compose из официальных репозиториев Debian, за последним выпуском стоит несколько второстепенных версий, поэтому мы установим его из репозитория Docker GitHub. Команда ниже немного отличается от той, которую вы найдете на странице Releases. Используя флаг + -o +, чтобы сначала указать выходной файл, а не перенаправлять вывод, этот синтаксис позволяет избежать появления ошибки отказа в разрешении, вызванной при использовании + sudo +.

Мы проверим current release и, при необходимости, обновим его в приведенной ниже команде:

sudo curl -L https://github.com/docker/compose/releases/download//docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

Далее мы установим права доступа:

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

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

docker-compose --version

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

Outputdocker-compose version , build f46880fe

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

Шаг 2 - Запуск контейнера с Docker Compose

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

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

mkdir hello-world
cd hello-world

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

nano docker-compose.yml

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

докер-compose.yml

my-test:
image: hello-world

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

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

docker images

При отсутствии локальных изображений отображаются только заголовки столбцов:

OutputREPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

Теперь, оставаясь в каталоге + ~ / hello-world +, мы выполним следующую команду:

docker-compose up

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

OutputPulling 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, что в свою очередь подтверждает, что установка, кажется, работает:

Output. . .
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 |
. . .

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

Output 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 работают только до тех пор, пока команда активна, поэтому, как только + hello + завершит работу, контейнер остановится. Следовательно, когда мы смотрим на активные процессы, появляются заголовки столбцов, но контейнер + hello-world + не будет указан, потому что он не запущен:

docker ps
OutputCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES

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

docker ps -a
OutputCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
06069fd5ca23        hello-world         "/hello"            35 minutes ago      Exited (0) 35 minutes ago                       hello-world_my-test_1

Здесь отображается информация, которая нам понадобится для удаления контейнера, когда мы закончим с ним.

Шаг 3 - Удаление изображения (необязательно)

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

docker rm

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

docker rmi hello-world

Заключение

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

Хотя пример Hello World подтвердил нашу установку, простая конфигурация не демонстрирует одно из основных преимуществ Docker Compose - возможность одновременной установки и отключения группы контейнеров Docker. Чтобы увидеть возможности Docker Compose в действии, вы можете посмотреть этот практический пример: https://www.digitalocean.com/community/tutorials/how-to-configure-a-continuous-integration-testing-environment- with-docker-and-docker-compose-on-ubuntu-16-04 [Как настроить среду тестирования непрерывной интеграции с помощью Docker и Docker Compose в Ubuntu 16.04].

Related