WindowsMacПрограммное обес..НастройкиБезопасностьПродуктивностьЛинуксАндроид (Androi.. Все

Как использовать Docker Compose на Linux

Отредактировано 5 несколько месяцев назад от ExtremeHow Редакционная команда

ДокерКонтейнерыРазвертывание приложенийDocker ComposeОркестрацияКонфигурацияСкриптингДевОпсКомандная строкаМульти-контейнер

Как использовать Docker Compose на Linux

Перевод обновлен 5 несколько месяцев назад

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

Понимание Docker и Docker Compose

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

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

Настройка Docker и Docker Compose на Linux

Первым шагом в использовании 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.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

После того, как вы настроили файл docker-compose.yml, ваше многосервисное приложение можно запустить простой командой. Перейдите в директорию, содержащую файл docker-compose.yml и запустите:

docker-compose up

Команда docker-compose up ищет файл docker-compose.yml в текущей директории, создает необходимые образы, если они недоступны локально, и запускает определенные сервисы.

Если вы хотите запустить приложение в фоновом режиме (изолированном режиме), вы можете использовать опцию -d:

docker-compose up -d

Управление вашей средой Docker Compose

Docker Compose предоставляет несколько команд для управления вашей средой:

  1. docker-compose ps: Отображает статус сервисов, определенных в файле Compose.
  2. docker-compose start: Запускает существующий контейнер для сервиса.
  3. docker-compose stop: Останавливает контейнеры, не удаляя их.
  4. docker-compose down: Останавливает и удаляет все контейнеры, определенные в файле docker-compose.yml.
  5. docker-compose logs: Получает логи для сервиса.

Использование томов и сетей в Docker Compose

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

Мощная функция Docker Compose — возможность масштабирования сервисов. Это особенно полезно для эмуляции более реалистичных условий в среде разработки. Вы можете масштабировать сервис с помощью опции --scale.

docker-compose up --scale web=3

Эта команда запустит три экземпляра сервиса web.

Выполнение команд внутри контейнеров

Вы можете выполнить произвольные команды внутри ваших запущенных сервисов, используя docker-compose exec:

docker-compose exec web bash

Эта команда открывает оболочку bash внутри запущенного контейнера сервиса web.

Привязка Docker Compose к одной сети

По умолчанию 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 для удовлетворения конкретных нужд.

Если вы найдете что-то неправильное в содержании статьи, вы можете


Комментарии