Установка Docker на контроллер Wiren Board
Описание
Docker — программное обеспечение для запуска приложений в изолированной среде. С его помощью можно упаковать приложение со всем его окружением и зависимостями в контейнер и потом развернуть его на любой ОС Linux. Такой подход позволяет избежать конфликта используемых приложением библиотек с установленными в основной системе.
В новых релизах на базе Debian «bullseye» (wb-2304 и новее) места в корневом разделе стало меньше и докер больше поставить нельзя, решения:
- Остаться на wb-2207 — докер будет без проблем работать на Wiren Board 6 и 7.
- Расширить корневой раздел до 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 созданную выше папку:
- Откройте файл в редакторе:
nano /etc/docker/daemon.json
- Вставьте в него строки:
{ "data-root": "/mnt/data/.docker", "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "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