Установка Docker на контроллер Wiren Board

From Wiren Board
This is the approved revision of this page, as well as being the most recent.

Описание

Docker — программное обеспечение для запуска приложений в изолированной среде. С его помощью можно упаковать приложение со всем его окружением и зависимостями в контейнер и потом развернуть его на любой ОС Linux. Такой подход позволяет избежать конфликта используемых приложением библиотек с установленными в основной системе.

В новых релизах на базе Debian «bullseye» (wb-2304 и новее) места в корневом разделе стало меньше и докер больше поставить нельзя, решения:

  1. Остаться на wb-2207 — докер будет без проблем работать на Wiren Board 6 и 7.
  2. Расширить корневой раздел до 2 Гбайт по инструкции.

С помощью docker-контейнеров распространяется много открытого ПО, например, Home Assistant и openHAB.

Подготовка к установке

Копируйте команды из инструкции, вставляйте их в консоль контроллера с помощью клавиш Shift+Insert и запускайте клавишей Enter. В случае ошибок, внимательно читайте вывод, там будут инструкции и подсказки.

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

apt update && apt install ca-certificates curl gnupg lsb-release

Добавьте репозиторий с пакетами docker:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null

Добавьте GPG ключ для репозитория:

curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Docker пока не поддерживает nftables, который заменил iptables в новом bullseye — поэтому, если у вас релиз wb-2304 и новее, надо выполнить по очереди:

apt install -y iptables
update-alternatives --set iptables /usr/sbin/iptables-legacy
update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy

Предварительная настройка

Чтобы не потерять установленный софт и его данные, обновляйте ПО контроллера только через менеджер пакетов apt. Подробнее читайте в статье Программное обеспечение Wiren Board.

Встроенный флеш-накопитель контроллера разбит на разделы и для пользователя отведён самый большой из них, который монтируется в папку /mnt/data. Нужно учесть эту особенность при установке программ, а также при обновлении прошивки контроллера.

Настройте симлинк для папки конфигурации:

mkdir /mnt/data/etc/docker && ln -s /mnt/data/etc/docker /etc/docker

Мы будем хранить образы на встроенном накопителе, если вам нужно больше места под образы — используйте внешнюю флешку.

Создайте папку для хранения образов:

mkdir /mnt/data/.docker

Укажите в файле настроек daemon.json созданную выше папку:

  1. Откройте файл в редакторе:
    nano /etc/docker/daemon.json
    
  2. Вставьте в него строки:
    {
      "data-root": "/mnt/data/.docker",
      "log-driver": "json-file",
      "log-opts": {
        "max-size": "10m",
        "max-file": "3"
      }
    }
    
  3. Сохраните и закройте файл: Ctrl+S и Ctrl+X.

В параметре log-opts задаются ограничения на журналы контейнеров, подробнее.

Установка

После того, как мы указали, где будут храниться контейнеры, устанавливаем сам docker:

apt update && apt install docker-ce docker-ce-cli containerd.io

Чтобы проверить, что всё работает — запустите контейнер hello-world:

docker run hello-world

Если в консоли появилась надпись Hello from Docker!, docker установлен и работает.

Иногда требуется перезагрузка командой:

reboot

затем повторить проверку.

Полезные команды

Список всех доступных команд можно посмотреть во встроенной справке:

docker --help

Ниже вы найдёте использование основных команд.

Получить образ:

# docker pull esphome/esphome
Using default tag: latest
latest: Pulling from esphome/esphome
f98812e1a494: Pull complete 
f20b799f735a: Pull complete 
a3eebee895ee: Pull complete 
d95c6fb39c81: Pull complete 
4b80ed7a161f: Pull complete 
cf110f754813: Pull complete 
9c25c9407f5a: Pull complete 
f8e529b4d0b5: Pull complete 
59ec28d4b7f1: Pull complete 
Digest: sha256:907ae118d77c3c63112d7eb09663d6567853df2549e45b9f60fa4803c0aafcdf
Status: Downloaded newer image for esphome/esphome:latest
docker.io/esphome/esphome:latest

Список локальныйх образов:

# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
esphome/esphome     latest              0401c33b2983        28 hours ago        219MB
hello-world         latest              c0218de6585d        12 months ago       8.95kB

Запуск образа:

# docker run -it --name esphome 0401c33b2983
742dd9e812ea8ab37f0bcd9b4f6dda34d70de5ae92ddec6557a2f1a213ed859b

Запущенный образ — это контейнер. Чтобы контейнер запускался автоматически, добавьте параметр --restart unless-stopped, подробнее.

Если контейнер запущен с параметрами -it, то вы можете выйти из консоли без остановки контейнера, для этого нажмите по очереди сочетания клавиш Ctrl+p и Ctrl+q. Чтобы выйти из консоли и остановить контейнер, нажмите Ctrl+c.

Список контейнеров со статусами:

# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
742dd9e812ea        0401c33b2983        "/entrypoint.sh dash…"   19 seconds ago      Up 18 seconds               6052/tcp            esphome
b87586003c09        hello-world         "/hello"                 38 minutes ago      Exited (0) 38 minutes ago                       admiring_curie

Подключиться к запущенному контейнеру:

docker attach esphome

Остановка контейнера:

# docker stop esphome
esphome

Удалить остановленный контейнер:

# docker rm esphome
esphome

Удалить образ:

# docker rmi 0401c33b2983
Untagged: esphome/esphome:latest
Untagged: esphome/esphome@sha256:907ae118d77c3c63112d7eb09663d6567853df2549e45b9f60fa4803c0aafcdf
Deleted: sha256:0401c33b29832eda0d064c6e786af6171a8849e75e6c19c5ed9db217f471ef83
Deleted: sha256:e6704f3efee96502167917a51fbc6daa30293858fe8ba8f39d2ea0c41bc1fc8a
Deleted: sha256:1d931fa53fc03964ab7328e5eeae0f0dfacbdfac235a57b88eef9a64f929acb1
Deleted: sha256:b4e4d712f11193ed8f62f621c4144f1ff290472aec189709600dfc40360e7a9e
Deleted: sha256:0bf55d4ba3d1dbd430f1a44d83b0ee6569478b1718eb39387922043503fb86f8
Deleted: sha256:6aaea8978a285b4527f3728ea8aceb3aeb20ec590cf5fb277a01047386d50a49
Deleted: sha256:b9e65e0630bbd4c2afb6e02c136c97971c75f12b3483809187e5d7408bf8fecc
Deleted: sha256:a7e364f65210a627eae36ac800e7f49f90468607ab6d4e69a44fb42943dca6b3
Deleted: sha256:97192e30a0c129d031979b18fe321b22e2bca286597c02d209ac93355deb64cd
Deleted: sha256:3d92533735a9bf060b543dec10eefdbe98288abc43cfb671bb2b74dbe0f5fa88

Полезные ссылки