Docker Compose – это простая программа на Python, которая помогает легко развертывать несколько док-контейнеров на сервере.
Для описания сервиса используется простой файл YAML.
Вместо длинных docker run . . . вы можете просто использовать docker-compose up -d для развертывания нескольких сервисов одновременно.
В этой статье покажем вам, как установить Docker Compose на сервере CentOS. Мы также покажем вам быстрый пример использования Docker Compose для развертывания сервера NGINX с определенной конфигурацией.
Установка docker-compose на CentOS
Вам нужно установить Docker заранее. Обязательно установите Docker в вашей системе CentOS перед установкой Docker Compose.
docker-compose не входит ни в официальные репозитории CentOS, ни в rpm-репозиторий Docker.
Есть два способа установить Docker Compose в Linux:
- Загрузите установочные файлы Docker Compose Linux и настройте их вручную
- Используйте PIP для простой установки Docker Compose
Лично vsмы предпочитаем использовать PIP для установки Docker Compose. Поскольку Docker Compose – это в основном приложение Python, имеет смысл использовать PIP для его установки.
Посмотрим, как это сделать.
Установите pip3
Установим pip3 с помощью следующей команды:
sudo dnf install python3-pip
Установите docker-compose с помощью pip3
Используем pip для установки docker-compose
pip3 install --user docker-compose
Обновить PATH
pip устанавливает docker-compose в каталог ~/.local/bin. Вам нужно будет добавить его в переменную окружения PATH, чтобы запустить его из любого места:
echo 'PATH="$PATH:$HOME/.local/bin"' >> ~/.bashrc
Если вы используете zsh, измените.bashrc на .zshrc.
Как только вы закончите, либо используйте исходную команду, source ~/.bashrc либо снова откройте терминал (выйдите из системы и войдите снова, если это сервер).
Убедитесь, что docker-compose установлен с помощью следующей команды:
linux@andreyex:~$ docker-compose --version docker-compose version 1.26.2, build unknown
Поздравляем! Теперь на вашем сервере CentOS 8 установлена программа docker-compose.
Хотите проверить это? Следуйте этому простому руководству и узнайте, как использовать Docker Compose.
Разверните пример сервера nginx с помощью docker-compose
Nginx является одним из самых популярных веб-серверов, его легко развернуть через докер.
Давайте сравним 2 сспособа.
Развертывание Nginx без Docker Compose
Вы можете использовать команду run для простого развертывания сервера nginx следующим образом:
docker run --name server --network net -v html:/usr/share/nginx/html -v $PWD/custom-config.conf:/etc/nginx/nginx.conf -p 80:80 --restart on-failure -d nginx:latest
Здесь вы развернули сервер nginx с именем контейнера «server», используя внешнюю сеть «net», подключили том с именем «html», используя пользовательский файл конфигурации и прослушивая порт 80 на хосте, который будет автоматический перезапуск при сбое.
Давайте рассмотрим вопросы здесь:
Вам придется заранее создать сети и тома.
Docker не будет автоматически создавать сеть и том. Вам придется создать их заранее.
Слишком много вариантов, чтобы писать каждый раз
Есть слишком много вариантов, чтобы написать. Если это более сложный контейнер, такой как контейнер базы данных, контейнер обратного прокси или контейнер nextcloud, эти параметры будут только расширяться.
Среда разработки
Что если вы тестируете свою сборку и не хотите сохранять объем после остановки контейнера? Вам придется вручную удалить том и сеть после этого.
Развертывание Nginx с помощью Docker Compose
Во-первых, вам нужно создать файл композиции.
Создайте каталог с именем “nginx-compose” и перейдите в него:
mkdir nginx-compose && cd nginx-compose
Создайте файл с именем «docker-compose.yml» и добавьте следующие строки
version: "3.3" services: server: image : "nginx:latest" container_name: "server" volumes: - "html:/usr/share/nginx/html" - "./custom-config.conf:/etc/nginx/nginx.conf" networks: - "net" ports: - "80:80" restart: "on-failure" volumes: html: networks: net:
В этом файле compose описывается служба с именем server, которая будет развертывать сервер nginx с точно такими же конфигурациями, как мы это делали в несложном режиме. Разверните его, используя:
docker-compose up -d
docker-compose найдет в текущем каталоге файл с именем “docker-compose.yml”, проанализирует его и развернет определенные в нем службы.
Давайте теперь рассмотрим проблемы некомпозиционного метода с помощью метода compose:
- Не нужно заранее создавать сети и тома, это делает Docker-compose. Вы можете добавить внешние тома, задав для каждого тома/сети для внешнего тома значение true.
- После того как вы написали файл .yaml, вам больше не нужно записывать массивные команды. Вы можете скопировать этот файл на любой другой сервер, на котором установлена последняя версия docker-compose, и он с легкостью будет работать как положено.
- Вы можете использовать команду docker-compose down -v, чтобы остановить и удалить не только контейнеры, но и все сети и тома, созданные docker-compose. Это помогает в очистке в среде разработки/тестирования.
Есть много других преимуществ использования docker-compose docker run, особенно в рабочей среде, что выходит за рамки сегодняшней статьи.