Добавить в корзинуПозвонить
Найти в Дзене
AnyKey.blog

Docker: установка и первоначальная настройка

Привет, Мир! Этой статьёй я решил начать цикл записей про контейнеры и разворачиваемые приложения. В данной инструкции мы установим и настроем docker, docker-compose, а так же пару очень полезных приложения, которые помогут Вам в знакомстве с данным видом запуска и обслуживании контейнеров. Так случилось что я привык запускать большинство приложений в контейнерах, а Docker - один из наиболее доступных и распространенных способов это реализовать (есть еще как минимум proxmox с lxc). Ранее в статье про ВПН я уже описывал эти шаги, но решил продублировать их и тут для Вашего удобства. В дальнейших записях я буду ссылаться на данную инструкцию. Поехали! Установка docker и compose Устанавливаем зависимости необходимые для Docker: sudo dnf install -y yum-utils device-mapper-persistent-data lvm2 Устанавливаем репозиторий: sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo Устанавливаем Docker: sudo dnf install -y docker-ce --nobest Запускаем: sudo syste
Оглавление

Привет, Мир! Этой статьёй я решил начать цикл записей про контейнеры и разворачиваемые приложения. В данной инструкции мы установим и настроем docker, docker-compose, а так же пару очень полезных приложения, которые помогут Вам в знакомстве с данным видом запуска и обслуживании контейнеров.

Так случилось что я привык запускать большинство приложений в контейнерах, а Docker - один из наиболее доступных и распространенных способов это реализовать (есть еще как минимум proxmox с lxc).

Ранее в статье про ВПН я уже описывал эти шаги, но решил продублировать их и тут для Вашего удобства. В дальнейших записях я буду ссылаться на данную инструкцию. Поехали!

Установка docker и compose

Устанавливаем зависимости необходимые для Docker:

sudo dnf install -y yum-utils device-mapper-persistent-data lvm2

Устанавливаем репозиторий:

sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

Устанавливаем Docker:

sudo dnf install -y docker-ce --nobest

Запускаем:

sudo systemctl enable --now docker

Можно добавить права пользователю для удобства:

sudo usermod -aG docker user

На этом установка Docker завершена, можно проверить ее командой:

sudo systemctl status docker
sudo docker --version

Но для продолжения нам еще необходим compose, он устанавливается двумя командами:

sudo curl -L "https://github.com/docker/compose/releases/download/v2.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Проверяем установку:

docker-compose --version

Установка portainer

Portainer -  это инструмент управления контейнерами с помощью WEB-интерфейса.

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

Для запуска portainer нам необходимо создать хранилище:

docker volume create portainer_data

Ну и ввести команду запуска:

docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest

Рассмотрим команду подробнее:

-p 8000:8000 -p 9443:9443 - данным разделом мы пробрасываем порты из сервера в контейнер. Слева порт сервера, справа - контейнера. Если данные порты уже используются у Вас, тогда поменяйте их на доступные.

--name portainer - имя контейнера.

--restart=always - политика управления перезапуска контейнера (варианты: unless-stopped, no, on-failure[:max-retries]).

-v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data - пробрасываем "папки" по аналогии с портами.

portainer/portainer-ce:latest - используемый образ. Тут можно вместо latest прописать необходимую версию. Это полезно, к примеру, для контейнеров с базами данных, если того требует использующее её приложение.

На этом все, проверить работу контейнера можно командой, она покажет все запущенные контейнеры:

docker ps

А так же Вы теперь можете войти в WEB-интерфейс portainer по адресу https://localhost:9443 - где localhost - адрес Вашего сервера.

При первом входе на WEB-интерфейс Вам предстоит создать пользователя с паролем, а после подключиться к Вашему окружению, в нашем случае - Add Environmen>Sandalone>Socket.

-2

На этом этапе установка portainer закончена, Вы уже сможете увидеть свой контейнер в списке запущенных, а так же размещать новые. Этим мы и займемся сейчас ниже и сделаем это вторым способом - docker-compose через интерфейс Portainer. Поехали!

Установка Watchtover

Итак, для автоматизации процесса наблюдения за обновлениями существует контейнер Watchtower.

Есть простой способ запуска данного контейнера с стандартными настройками командой:

docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower

Эта команда загрузит образ Watchtower из Docker Hub и запустит его в фоновом режиме. Он будет следить за изменениями в вашем реестре и автоматически обновлять ваши контейнеры.

Меня такой вариант не устраивает, люблю я контролировать процессы обновления моих контейнеров. Итак, если Вас так же волнует судьба Ваших приложений, ниже я опишу процесс запуска Watchtower только для мониторинга обновлений и уведомления на почту по расписанию.

Для запуска по методу compose в portainer Вам необходимо зайти в пункт меню Stacks и нажать на кнопку +add Stack. Перед Вами откроется окно редактора:

-3

Нам необходимо внести название в строку Name, а в поле ниже конфигурацию для запуска контейнера на yaml. Пример конфигурации контейнера ниже:

version: "3"
services:
watchtower:
image: containrrr/watchtower
container_name: watchtower
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- TZ=Europe/Moscow
# - WATCHTOWER_CLEANUP=true
- WATCHTOWER_MONITOR_ONLY=true
- WATCHTOWER_SCHEDULE=0 0 0 * * *
- WATCHTOWER_NOTIFICATIONS=email
- WATCHTOWER_NOTIFICATION_EMAIL_SUBJECTTAG=
Ваш тэг
- WATCHTOWER_NOTIFICATION_EMAIL_FROM=почта отпрввителя
- WATCHTOWER_NOTIFICATION_EMAIL_TO=почта получателя
- WATCHTOWER_NOTIFICATION_EMAIL_SERVER=адрес сервера исходящей почты
- WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=порт сервера исходящей почты
- WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=пользователь
- WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=пароль
- WATCHTOWER_NOTIFICATION_EMAIL_DELAY=2

С первой частью понятно: мы описываем используемый образ и имя контейнера , далее пути проброса папки по аналогии с командой docker. Ниже же прописаны параметры контейнера, они специфические для разных приложений. Рассмотрим их подробнее:

  • TZ - временная зона согласно списку;
  • WATCHTOWER_CLEANUP - очистка неиспользуемых образов (в данном варианте я не использую это так как обновляю образы вручную);
  • WATCHTOWER_MONITOR_ONLY - параметр ограничивающий действия с образами лишь мониторингом;
  • WATCHTOWER_SCHEDULE - расписание запуска проверки как в Cron (Секунды Минуты Часы День месяца Месяц День недели). В моем варианте - в полночь;
  • WATCHTOWER_NOTIFICATION - метод уведомлений (варианты: email , slack , msteams , gotify) я выбрал вариант с почтой.

Ниже идут настройки почтового сервера, думаю, объяснять тут ничего не придется. Вносите необходимые правки и нажимайте кнопку Deploy the stack. Контейнер запустится и сразу пришлет тестовое письмо. Проверка произведется согласно Вашему параметру расписания.

Если Вы хотите автоматически обновлять свои контейнеры, тогда закомментируйте знаком # строку WATCHTOWER_MONITOR_ONLY или присвойте ей параметр false. Так же будет полезным раскомментировать параметр WATCHTOWER_CLEANUP .

На этом статья полностью охватила тему начального знакомства с контейнерами. Дальше на примерах более сложных контейнеров я Вам покажу как разворачивать сразу несколько приложений в одном стэке, как прятать свои пароли не используя их в теле yaml и много других полезных вещей.

Так же не забывайте о возможности задать вопросы в комментариях или Telegram канале. До связи!