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

Обновлено: 03.07.2024

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

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

Данный мануал поможет установить Docker Compose в Ubuntu 20.04 и научит использовать его.

Требования

  • Сервер Ubuntu 20.04, настроенный по этому мануалу.
  • Предустановленная система Docker (инструкции по установке можно найти в разделах 1-2 этого мануала).

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

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

Найдите ссылку на свежий релиз на этой странице. На данный момент это версия 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

Теперь установите права и сделайте файл исполняемым:

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

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

Команда должна вернуть:

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-файл.

Создайте в домашнем каталоге новый каталог, а затем перейдите в него:

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

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

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

<!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>

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

Теперь создайте файл 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 хоста (системы, в которой вы запускаете Docker Compose) будут перенаправлены на порт 80 контейнера web, где будет работать Nginx.

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

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

Мы создали тестовую страницу и файл docker-compose.yml, который запустит контейнерную среду веб-сервера для ее обслуживания.

3: Запуск Docker Compose

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

docker-compose up -d

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

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

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

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

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

This is a Docker Compose Demo Page.
This content is being served by an Nginx container.

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

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

4: Команды Docker Compose

Теперь вы знаете, как настроить файл docker-compose.yml и запустить вашу среду. Давайте посмотрим, как использовать другие команды Docker Compose, предназначенные для управления и взаимодействия с вашей контейнерной средой.

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

docker-compose logs
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" "-"

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

docker-compose pause
Pausing compose-demo_web_1 . done

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

docker-compose unpause
Unpausing compose-demo_web_1 . done

Команда stop прервет работу контейнера, но сохранит все данные, связанные с ним.

docker-compose stop
Stopping compose-demo_web_1 . done

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

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

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

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

docker image rm nginx:alpine
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 Compose и управлять контейнерами с помощью этого инструмента.

Данное руководство охватывает только основы работы с Docker Compose. Больше информации об этом инструменте вы найдете в его официальной документации.

How to Install and Use Docker Compose on Ubuntu 18.04

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

Как установить и использовать Docker Compose в Ubuntu 18.04

Docker Compose - это инструмент, который позволяет определять многоконтейнерные приложения Docker и управлять ими. Он использует файл YAML для настройки служб, сетей и томов приложения.

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

Те же инструкции применимы для Ubuntu 16.04 и любого другого дистрибутива на основе Debian, включая Debian, Linux Mint и Elementary OS.

Предпосылки

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

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

Установочный пакет Docker Compose доступен в официальных репозиториях Ubuntu 18.04, но он не всегда может быть последней версией. Рекомендуемый подход - установить Docker Compose из репозитория Docker GitHub.

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

Чтобы установить Docker Compose в Ubuntu 18.04, выполните следующие действия:

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

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

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

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

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

В этом разделе мы покажем, как использовать Docker Compose для настройки многоконтейнерного приложения WordPress в Ubuntu 18.04.

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

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

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

Давайте проанализируем код построчно.

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

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

  • Использует mysql:5.7 изображение. Если образ отсутствует в системе, он будет извлечен из общедоступного репозитория 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 в Ubuntu 18.04.

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

С помощью Compose вы можете определить переносимую среду приложений, которую можно запускать в любой системе. Составные среды изолированы друг от друга, что позволяет запускать несколько копий одной и той же среды на одном хосте.

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

В этой статье объясняется, как установить последнюю версию Docker Compose в Ubuntu 20.04. Мы также рассмотрим основные концепции и команды Docker Compose.

Подготовка

Мы предполагаем, что у вас установлен Docker на вашем компьютере с Ubuntu.

Установка Docker Compose в Ubuntu

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

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

Используйте curl для загрузки файла Compose в каталог /usr/local/bin :

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

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

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

Это оно! Docker Compose установлен на вашем компьютере с Ubuntu, и вы можете начать его использовать.

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

В этом разделе мы будем использовать Docker Compose для создания многоконтейнерного приложения WordPress.

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

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

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

docker-compose.yml файла docker-compose.yml .

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

Затем вы определяете службы, тома и сети.

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

Сервисы могут использовать образы, доступные в DockerHub, или образы, созданные из Dockerfile. Раздел службы также включает ключи, определяющие открытые порты, тома, переменные среды, зависимости и другие команды Docker.

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

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

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

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

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

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

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

Удаление Docker Compose

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

Выводы

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

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

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

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

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

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

  • Пользователь с привилегиями sudo без прав root (в статье Начальная настройка сервера с Ubuntu 18.04 объясняется, как это настроено).
  • Docker, установленный согласно инструкциям в шаге 1 и шаге 2 руководства Установка и использование Docker в Ubuntu 18.04

После установки всех необходимых компонентов мы сможем двигаться дальше.

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

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

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

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

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

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

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

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

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

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

Сначала мы создадим директорию для файла 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 , с помощью которого можно отобразить все контейнеры, а не только активные:

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

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

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

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

Заключение

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

Хотя пример Hello World использовался для подтверждения корректности установки, простая конфигурация не демонстрирует одно из главных преимуществ Docker Compose — возможность одновременного запуска группы контейнеров Docker. Чтобы увидеть силу Docker Compose в действии, вы можете ознакомиться с практическим примером в статье Настройка среды непрерывного интеграционного тестирования с помощью Docker и Docker Compose в Ubuntu 16.04 (обратите внимание, что эта статья для Ubuntu 16.04, а не 18.04)

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