Docker часть 2: Docker и Portainer
В первый части мы установили чистый Debian на виртуальную машину Proxmox. Сейчас добавим Docker и Portainer для управления контейнерами.
Настройка репозитория
Будет использовать метод установки из репозитория. Данный способ является самым оптимальным. И рекомендован разработчиками Docker.
Обновляем все текущие пакеты и добавляем возможность использовать apt через HTTPS:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
Добавляем официальный GPG-ключ
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
Настраиваем доступ до репозитория
echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Установка Docker
Устанавливаем все необходимые пакеты для работы с docker
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Чтобы не было ошибки permission denied unix:///var/run/docker.sock
необходимо добавить текущего пользователя в группу и назначить права на docker.sock:
sudo usermod -aG docker ${USER}
sudo chmod 666 /var/run/docker.sock
Установка Portainer
Чтобы установить Portainer, мы создадим скрипт docker-compose, который затем запустим, чтобы все настроить. В дальнейшем все дополнительные контейнеры будем хранить в этом файле.
mkdir home-assistant
cd ./home-assistant
sudo nano docker-compose.yaml
# Сохранить и закрыть с помощью Ctrl+O и Ctrl+X
Хранить всю конфигурацию будем в папке home-assistant. Это упрощает резервное копирование всего. Эти тома будут хранить данные из образа Docker локально, поэтому данные не будут потеряны при пересборке контейнера (например, при обновлении).
version: '3.0'
services:
portainer:
container_name: portainer
image: portainer/portainer-ce:latest
restart: unless-stopped
ports:
- "9000:9000/tcp"
- "9443:9443/tcp"
environment:
- TZ=Europe/Moscow
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock
- ./portainer/data:/data
Мы также разрешим нашему пользователю без прав администратора изменять этот файл. Опять же, просто чтобы сделать нашу жизнь немного проще.
sudo chown root:docker docker-compose.yaml
sudo chmod g+w docker-compose.yaml
Запуск
Теперь выполняем команду docker compose up -d
, и Docker загрузит последний образ и все настроит.
При первом посещении Portainer нас попросят создать учетную запись пользователя. На это будет 10 минут. Если не успеть, то придется перезагружать docker контейнер. Это сделано для безопасности. Так как не всегда Portainer запускается локально.
Когда настройка пройдет у нас появится доступ к web интерфейсу:
https://<ip>:9443 # ошибка сертификата
http://<ip>:9000 # не защищенное соединение
Не обращайте внимание на ошибки. Они появляются так как ssl сертификат является самоподписанным. В этом нет ничего плохого.
Итоговая структура проекта
Папка portainer заполнилась автоматически, после запуска Docker контейнера. В ней хранятся данные, которые в случае перезапуска загрузятся и не придется устанавливаться все с нуля.
home-assistant
├── docker-compose.yaml
└── portainer
└── data
Хорошие статьи. А где у Вас можно взять полный docker-compose.yml файл?