Docker Compose – это простая программа на Python, которая помогает легко развертывать несколько док-контейнеров на сервере.
Для описания сервиса используется простой файл YAML.
Вместо длинных docker run . . . вы можете просто использовать docker-compose up -d для развертывания нескольких сервисов одновременно.
В этой статье покажем вам, как установить Docker Compose на сервере CentOS. Мы также покажем вам быстрый пример использования Docker Compose для развертывания сервера NGINX с определенной конфигурацией.
Вам нужно установить Docker заранее. Обязательно установите Docker в вашей системе CentOS перед установкой Docker Compose.
docker-compose не входит ни в официальные репозитории CentOS, ни в rpm-репозиторий Docker.
Есть два способа установить Docker Compose в Linux:
Лично vsмы предпочитаем использовать PIP для установки Docker Compose. Поскольку Docker Compose – это в основном приложение Python, имеет смысл использовать PIP для его установки.
Посмотрим, как это сделать.
Установим pip3 с помощью следующей команды:
sudo dnf install python3-pip
Используем pip для установки docker-compose
pip3 install --user docker-compose
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 является одним из самых популярных веб-серверов, его легко развернуть через докер.
Давайте сравним 2 сспособа.
Вы можете использовать команду 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-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 docker run, особенно в рабочей среде, что выходит за рамки сегодняшней статьи.