Отредактировано 5 несколько месяцев назад от ExtremeHow Редакционная команда
ДокерКонтейнерыРазвертывание приложенийDocker ComposeОркестрацияКонфигурацияСкриптингДевОпсКомандная строкаМульти-контейнер
Перевод обновлен 5 несколько месяцев назад
Docker Compose — это инструмент, используемый для определения и запуска многоконтейнерных приложений Docker. С помощью Docker Compose вы можете использовать YAML файл для настройки сервисов вашего приложения, а затем использовать одну команду для создания и запуска всех сервисов из вашей конфигурации. Это невероятно полезно при работе со сложными приложениями, содержащими множество связанных сервисов. Цель этого руководства — подробно объяснить использование Docker Compose на Linux.
Прежде чем погружаться в Docker Compose, важно понять, что такое Docker. Docker — это платформа, которая позволяет разработчикам и системным администраторам упаковывать приложения в контейнеры — стандартизированные исполняемые компоненты, которые объединяют исходный код приложения с библиотеками операционной системы и зависимостями, необходимыми для запуска этого кода в любой среде.
Docker Compose делает шаг дальше, позволяя вам настраивать и запускать несколько контейнеров Docker как единый сервис. Это означает, что вы можете управлять всеми зависимостями вашего приложения, используя простой файл под названием docker-compose.yml
. Этот файл содержит информацию о том, какой образ запускать, какие порты открывать, сопоставление томов и многое другое.
Первым шагом в использовании Docker Compose является обеспечение установки и работы Docker на вашей Linux машине. Большинство современных дистрибутивов Linux включают Docker в свои официальные репозитории, но вы также можете установить его из официального репозитория Docker для получения последней версии.
# Обновите индекс пакетов apt и установите пакеты, чтобы apt мог использовать репозиторий через HTTPS
sudo apt-get update -y
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common -y
# Добавьте официальный ключ GPG Docker и проверьте
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# Настройте стабильный репозиторий
sudo add-apt-repository \
"deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
# Установите Docker CE
sudo apt-get update -y
sudo apt-get install docker-ce docker-ce-cli containerd.io -y
# Проверьте установку Docker
sudo docker run hello-world
После установки Docker следующим шагом является установка Docker Compose. В отличие от Docker, Compose это отдельный инструмент. Вы можете скачать Docker Compose со страницы релизов GitHub.
# Скачайте текущий стабильный релиз Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# Примените разрешения на выполнение к бинарному файлу
sudo chmod +x /usr/local/bin/docker-compose
# Проверьте правильность установки Docker Compose
docker-compose --version
Файл docker-compose.yml
является основой использования Docker Compose. Здесь вы определяете все ваши сервисы (сущности ваших контейнеров приложения) и как они взаимодействуют друг с другом. Структура файла docker-compose.yml
довольно проста. Обычно он начинается с определения используемой версии Compose, за которым следует список сервисов.
Вот базовый пример файла docker-compose.yml
:
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80:80"
database:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
В приведенном выше примере файл Compose использует версию 3.8. Он определяет два сервиса, web
и database
. Сервис web
использует образ Nginx и сопоставляет порт 80 контейнера с портом 80 хозяина. Сервис database
использует образ MySQL с указанным паролем root.
После того, как вы настроили файл docker-compose.yml
, ваше многосервисное приложение можно запустить простой командой. Перейдите в директорию, содержащую файл docker-compose.yml
и запустите:
docker-compose up
Команда docker-compose up
ищет файл docker-compose.yml
в текущей директории, создает необходимые образы, если они недоступны локально, и запускает определенные сервисы.
Если вы хотите запустить приложение в фоновом режиме (изолированном режиме), вы можете использовать опцию -d
:
docker-compose up -d
Docker Compose предоставляет несколько команд для управления вашей средой:
docker-compose ps
: Отображает статус сервисов, определенных в файле Compose.docker-compose start
: Запускает существующий контейнер для сервиса.docker-compose stop
: Останавливает контейнеры, не удаляя их.docker-compose down
: Останавливает и удаляет все контейнеры, определенные в файле docker-compose.yml
.docker-compose logs
: Получает логи для сервиса.Docker Compose также позволяет определять тома и сети в вашем файле docker-compose.yml
. Тома используются для сохранения данных, а сети помогают в коммуникации между сервисами.
Чтобы определить том, добавьте следующее под раздел «services»:
services:
database:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
Эта конфигурация создает именованный том db_data
и монтирует его в /var/lib/mysql
внутри контейнера сервиса базы данных, где хранятся данные MySQL.
Сеть также может быть настроена:
services:
frontend:
image: node:14
networks:
- frontend-network
backend:
image: node:14
networks:
- backend-network
networks:
frontend-network:
backend-network:
Мощная функция Docker Compose — возможность масштабирования сервисов. Это особенно полезно для эмуляции более реалистичных условий в среде разработки. Вы можете масштабировать сервис с помощью опции --scale
.
docker-compose up --scale web=3
Эта команда запустит три экземпляра сервиса web
.
Вы можете выполнить произвольные команды внутри ваших запущенных сервисов, используя docker-compose exec
:
docker-compose exec web bash
Эта команда открывает оболочку bash внутри запущенного контейнера сервиса web
.
По умолчанию Docker Compose создает стандартную сеть для ваших сервисов. Однако вы можете привязать все сервисы к одной сети, определяя сеть и указывая ее в каждом сервисе:
version: '3.8'
services:
web:
image: nginx:latest
networks:
- custom-network
database:
image: mysql:5.7
networks:
- custom-network
networks:
custom-network:
Сервисы web
и database
оба подключены к сети custom-network
, что позволяет им общаться независимо.
Docker Compose — это мощный инструмент, который упрощает процесс управления многоконтейнерными приложениями Docker. Определяя сервисы в файле docker-compose.yml
, вы можете быстро развернуть и управлять стэком вашего приложения. Ключ к эффективному использованию Docker Compose — понять параметры конфигурации файла docker-compose.yml
, включая сервисы, тома и сети.
Это подробное руководство предоставляет обзор о том, как настроить Docker и Docker Compose на Linux, создать файл Compose и управлять вашим приложением. С этим знанием вы можете эффективно использовать Docker Compose для управления сложными средами на основе Linux. Практикуйтесь с вашими собственными приложениями, чтобы стать более знакомыми и настроить конфигурации Docker Compose для удовлетворения конкретных нужд.
Если вы найдете что-то неправильное в содержании статьи, вы можете