Docker Compose — это инструмент, который позволяет определять и настраивать многоконтейнерные приложения Docker. Он использует файл YAML для настройки контейнеров, сетей и томов приложения.
Чтобы установить Docker Compose на Debian 10,
- Установить Docker
- Загрузите двоичный файл Docker Compose в каталог на системном пути и сделайте его исполняемым.
- Скачать и запустить контерйнер Заббикса.
1. установить Docker
- Установите пакеты, необходимые для добавления нового репозитория через HTTPS:
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg2
- Импортируйте ключ GPG репозитория с помощью следующей
curl
команды :curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
В случае успеха команда вернется
OK
. - Добавьте стабильный репозиторий Docker APT в список репозиториев программного обеспечения вашей системы:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
вернет имя дистрибутива Debian . В данном случае это так
$(lsb_release -cs)buster
. - Обновите
apt
список пакетов и установите последнюю версию Docker CE (Community Edition):sudo apt update
sudo apt install docker-ce
- После завершения установки служба Docker запустится автоматически. Чтобы проверить это, введите:
sudo systemctl status docker
● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2019-07-30 20:52:00 GMT; 1min 11s ago Docs: https://docs.docker.com ...
- На момент написания последней стабильной версии Docker была
19.03.1
:docker -v
Docker version 19.03.1, build 74b1e89
Выполнение команды Docker без Sudo
По умолчанию только root и пользователь с привилегиями sudo могут выполнять команды Docker.
Если вы хотите выполнять команды Docker без предварительной записи, sudo
вам необходимо добавить своего пользователя в группу докеров, которая создается во время установки пакета Docker CE. Для этого введите:
sudo usermod -aG docker $USER
— это переменная среды, в которой хранится ваше имя пользователя.
$USER
Выйдите из системы и войдите снова, чтобы обновить членство в группе.
После этого убедитесь, что вы можете запускать docker
команды без sudo
ввода:
docker container run hello-world
Команда загрузит тестовое изображение, запустит его в контейнере, напечатает сообщение «Hello from Docker» и завершит работу. Результат должен выглядеть следующим образом:

Использование Docker
Теперь, когда вы установили на свой Debian 10, давайте рассмотрим основные концепции и команды докеров.
Образы Docker
Образ Docker состоит из ряда слоев файловой системы, представляющих инструкции в файле Dockerfile образа, которые составляют исполняемое программное приложение. Изображение — это неизменяемый двоичный файл, включающий приложение и все другие зависимости, такие как библиотеки, двоичные файлы и инструкции, необходимые для запуска приложения.
Большинство образов Docker доступны в Docker Hub . Это облачная служба реестра, которая, среди прочего, используется для хранения образов Docker в общедоступном или частном репозитории.
Чтобы найти изображение в реестре Docker Hub, используйте docker search
команду. Например, чтобы найти образ Debian, вы должны ввести:
docker search debian
Контейнеры Docker
Экземпляр изображения называется контейнером. Контейнер представляет среду выполнения для отдельного приложения, процесса или службы.
Возможно, это не самое подходящее сравнение, но если вы программист, вы можете думать об образе Docker как о классе, а контейнер Docker как об экземпляре класса.
Для запуска, остановки, удаления и управления контейнером используйте docker container
команду. Например, следующая команда запустит контейнер Docker на основе образа Debian. Если у вас нет образа локально, сначала он будет загружен:
docker container run debian
Контейнер Debian остановится сразу после загрузки, потому что у него нет длительного процесса, и никакая другая команда не предоставляется. Контейнер загрузился, запустил пустую команду и завершил работу.
Переключатель -it
позволяет взаимодействовать с контейнером через командную строку. Чтобы запустить интерактивный контейнер, введите:
docker container run -it debian /bin/bash
root@ee86c8c81b3b:/#
Как видно из выходных данных выше, после запуска контейнера командная строка изменяется, что означает, что теперь вы работаете изнутри контейнера .
Чтобы вывести список запущенных контейнеров Docker , используйте следующую команду:
docker container ls
Если у вас нет запущенных контейнеров, вывод будет пустым.
Чтобы просмотреть все контейнеры, передайте ему -a
переключатель:
docker container ls -a
Чтобы удалить один или несколько контейнеров, просто скопируйте идентификатор контейнера (или идентификаторы) и вставьте их после container rm
команды:
docker container rm c55680af670c
2. Установка Docker Compose
Установочный пакет Docker Compose доступен в официальных репозиториях Debian 10, но он не всегда может быть последней версией. Рекомендуемый подход — установить Docker Compose из репозитория Docker GitHub.
На момент написания этой статьи последней стабильной версией Docker Compose является версия 1.23.1
. Перед загрузкой двоичного файла Compose посетите страницу выпуска репозитория Compose на GitHub и проверьте, доступна ли для загрузки новая версия.
Выполните следующие действия, чтобы установить последнюю версию Docker Compose в Debian 10:
- Загрузите двоичный файл Docker Compose в
/usr/local/bin
каталог с помощьюwget
илиcurl
:curl -s https://api.github.com/repos/docker/compose/releases/latest | grep browser_download_url | grep docker-compose-linux-x86_64 | cut -d '"' -f 4 | wget -qi -
Используйте
chmod
для создания исполняемого двоичного файла Compose:chmod +x docker-compose-linux-x86_64
Перенести в папку приложений:
mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
- Чтобы проверить установку, используйте следующую команду, которая выводит версию Compose:
docker-compose --version
Результат будет выглядеть примерно так:
$ docker-compose version Docker Compose version v2.4.1
Начало работы с Docker Compose
В этом разделе мы покажем, как настроить локальную среду разработки WordPress с помощью Docker Compose.
Создайте каталог для проекта и перейдите в него :
mkdir wordpress_app && cd wordpress_app
Откройте текстовый редактор и создайте файл с именем docker-compose.yml
:
nano docker-compose.yml
Вставьте следующий контент:
docker-compose.yml
version: '3.7'
services:
db:
image: mysql:8.0
command: --default-authentication-plugin=mysql_native_password
restart: always
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: wordpress
wordpress:
image: wordpress
restart: always
volumes:
- ./wp_data:/var/www/html
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: password
depends_on:
- db
volumes:
db_data:
wp_data:
Давайте объясним код построчно
В первой строке указывается версия файла Compose . Существует несколько различных версий формата файла Compose с поддержкой определенных выпусков Docker.
Далее мы определяем две службы db
и wordpress
. Каждая служба создает отдельный контейнер при запуске Docker Compose.
db
:
- Изображение настроено на
mysql:8.0
изображение. Если изображение отсутствует, Compose извлечет его из общедоступного репозитория Docker Hub. Строка, начинающаяся с,command
отменяет команду по умолчанию. restart: always
Политика инструктирует Compose перезапустить контейнер , если он идет вниз.- Контейнер будет использовать именованный том
db_data
для сохранения базы данных. - Определяет переменные среды для
mysql:8.0
изображения.
wordpress
:
- Использует
wordpress
изображение. - Монтирует
wp_data
каталог на хосте/var/lib/mysql
внутри контейнера. - Перенаправляет открытый порт
80
на контейнере на порт8080
на хост-машине. - Определяет переменные среды для
wordpress
изображения. depends_on
Инструкция определяет зависимость между двумя службами. В этом примереdb
будет запущен раньшеwordpress
.
Из каталога проекта запустите стек WordPress, выполнив следующую команду:
docker-compose up
Результат должен выглядеть примерно так:
...
] /usr/sbin/mysqld: ready for connections. Version: '8.0.18' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server - GPL.
db_1_99946702ac7e | 2019-12-15T21:37:29.109255Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: '/var/run/mysqld/mysqlx.sock' bind-address: '::' port: 33060
...
Docker Compose извлечет изображения, запустит контейнеры и создаст wp_data
каталог в каталоге вашего проекта.
Войдите http://0.0.0.0:8080/
в свой браузер, и вы увидите стандартный экран установки WordPress.
На данный момент приложение WordPress запущено и работает, и вы можете начать работать над ним.
Чтобы остановить создание, нажмите CTRL+C
.
Вы также можете запустить Compose в автономном режиме, используя -d
опцию:
docker-compose up -d
Чтобы просмотреть запущенные контейнеры докеров, используйте следующую команду:
docker-compose ps
Name Command State Ports
------------------------------------------------------------------------------------------------------
wordpress_app_db_1_99946702ac7e docker-entrypoint.sh --def ... Up 3306/tcp, 33060/tcp
wordpress_app_wordpress_1_a428d8408817 docker-entrypoint.sh apach ... Up 0.0.0.0:8080->80/tcp
Чтобы остановить службы, когда Compose работает в автономном режиме, используйте:
docker-compose stop
Если вы хотите полностью удалить контейнеры, используйте down
опцию:
docker-compose down
При --volumes
передаче переключателя также удаляем объемы данных:
docker-compose down --volumes
Удаление Docker Compose
Если вам нужно удалить Docker Compose, вы можете просто удалить двоичный файл, набрав:
sudo rm /usr/local/bin/docker-compose
3.
Установка
Склонируйте репозиторий github.com/zabbix/zabbix-docker в директорию opt:
cd /opt/ git clone https: //github .com /zabbix/zabbix-docker |
Далее выберите подходящий вам docker-файл (я выбрал docker-compose_v3_alpine_mysql_latest) и запустите его; при желании можно сделать его копию, указав другое имя, чтобы не путаться среди такого большого количества docker-файлов, а так же указать пути до разделов (по умолчанию данные zabbix будут хорониться в директории ./zbx_env/*)
docker-compose -f . /docker-compose_v3_alpine_mysql_latest .yaml up -d |
Далее выждав какое-то время вы можете войти в web-интерфейс и приступить к настройке zabbix server.
Настройка systemd сервиса
Казалось бы все, но в случае перезапуска сервера контейнеры не будут запускаться автоматически. Обойти это можно создав systemd — unit который будет запускать docker-compose файл при загрузке системы.
Создаем файл /etc/systemd/system/zabbix-compose.service
и вставляем в него следующее содержимое:
[Unit] Description=Zabbix services with docker-compose Requires=docker.service After=docker.service [Service] WorkingDirectory= /opt/zabbix-docker/ User=root Group=docker Type=oneshot RemainAfterExit= yes ExecStartPre= /usr/local/bin/docker-compose -f . /docker-compose_v3_alpine_mysql_latest .yaml down - v # Compose up ExecStart= /usr/local/bin/docker-compose -f . /docker-compose_v3_alpine_mysql_latest .yaml up -d # Compose down, remove containers ExecStop= /usr/local/bin/docker-compose -f . /docker-compose_v3_alpine_mysql_latest .yaml down [Install] WantedBy=multi-user.target |
Теперь выполним следующие команды:
systemctl enable zabbix-compose.service systemctl daemon-reload systemctl start zabbix-compose.service |
Как редактировать параметры zabbix?
Если вам необходимо установить какие-то нестандартные значения параметров, то сделать это можно в env файлах, которые находятся в директории ./env_vars/
. К примеру, если мне надо увеличить CacheSize
то сделать я это могу в файле env_vars/.env_srv
отредактировав значение переменной ZBX_CACHESIZE
.
Все. Теперь можно приступить к настройке сервера.
Источники:
https://baks.dev/article/debian/how-to-install-and-use-docker-compose-on-debian-10-linux
https://maxidrom.net/archives/1819