|
|
(не показано 50 промежуточных версий 4 участников) |
Строка 1: |
Строка 1: |
| {{DISPLAYTITLE: Установка Docker на контроллер Wiren Board }} | | {{Draft}} |
| == Описание ==
| |
| [https://docker.com Docker] — программное обеспечение для запуска приложений в изолированной среде. С его помощью можно упаковать приложение со всем его окружением и зависимостями в контейнер и потом развернуть его на любой ОС Linux. Такой подход позволяет избежать конфликта используемых приложением библиотек с установленными в основной системе.
| |
| | |
| В новых релизах на базе Debian «bullseye» (wb-2304 и новее) места в корневом разделе стало меньше и докер больше поставить нельзя, решения:
| |
| # Остаться на wb-2207 — докер будет без проблем работать на Wiren Board 6 и 7.
| |
| # Расширить корневой раздел до 2 Гбайт по [[Enlarging_the_rootfs_partition|инструкции]].
| |
| | |
| С помощью docker-контейнеров распространяется много открытого ПО, например, [[Home Assistant]] и [https://www.openhab.org/ openHAB].
| |
| | |
| <gallery mode="packed" heights="150px">
| |
| Image: docker-hellow-world.png | Проверка работы docker
| |
| Image: docker-disk-usage.png | После установки docker, в разделе <code>/mnt/data</code> остаётся много свободного места для образов и пользовательских данных
| |
| </gallery>
| |
|
| |
|
| == Подготовка к установке == | | == Подготовка к установке == |
| {{Wbincludes:Installing Software In Console}}
| |
|
| |
|
| Установите необходимые зависимости:
| |
| <syntaxhighlight lang="bash"> | | <syntaxhighlight lang="bash"> |
| apt update && apt install ca-certificates curl gnupg lsb-release | | apt update |
| | apt install ca-certificates curl gnupg lsb-release |
| </syntaxhighlight> | | </syntaxhighlight> |
|
| |
|
| Добавьте репозиторий с пакетами docker:
| |
| <syntaxhighlight lang="bash"> | | <syntaxhighlight lang="bash"> |
| 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 | | 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 |
| </syntaxhighlight> | | </syntaxhighlight> |
|
| |
|
| Добавьте GPG ключ для репозитория:
| |
| <syntaxhighlight lang="bash"> | | <syntaxhighlight lang="bash"> |
| curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg | | curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg |
| </syntaxhighlight>
| |
| | |
| Docker пока не поддерживает nftables, который заменил iptables в новом bullseye — поэтому, '''если у вас релиз [[wb-2304]] и новее''', надо выполнить по очереди:
| |
| :<syntaxhighlight lang="bash">
| |
| apt install -y iptables
| |
| update-alternatives --set iptables /usr/sbin/iptables-legacy
| |
| update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
| |
| </syntaxhighlight> | | </syntaxhighlight> |
|
| |
|
| == Предварительная настройка == | | == Предварительная настройка == |
| {{Wbincludes:Installing Software In Console Catalog And Update}}
| |
|
| |
|
| Настройте симлинк для папки конфигурации:
| | Настраиваем симлинк для конфигурации |
| <syntaxhighlight lang="bash"> | | <syntaxhighlight lang="bash"> |
| mkdir /mnt/data/etc/docker && ln -s /mnt/data/etc/docker /etc/docker | | mkdir /mnt/data/etc/docker |
| | ln -s /mnt/data/etc/docker /etc/docker |
| </syntaxhighlight> | | </syntaxhighlight> |
|
| |
|
| Мы будем хранить образы на встроенном накопителе, если вам нужно больше места под образы — используйте внешнюю флешку.
| | Говорим, где хранить образы |
| | |
| Создайте папку для хранения образов:
| |
| <syntaxhighlight lang="bash"> | | <syntaxhighlight lang="bash"> |
| mkdir /mnt/data/.docker | | mkdir /mnt/data/root/docker |
| </syntaxhighlight> | | </syntaxhighlight> |
|
| |
|
| Укажите в файле настроек '''daemon.json''' созданную выше папку:
| | <syntaxhighlight lang="bash"> |
| # Откройте файл в редакторе:
| |
| #:<syntaxhighlight lang="bash">
| |
| nano /etc/docker/daemon.json | | nano /etc/docker/daemon.json |
| </syntaxhighlight> | | </syntaxhighlight> |
| # Вставьте в него строки:
| | |
| #:<syntaxhighlight lang="js">
| | <syntaxhighlight lang="js"> |
| { | | { |
| "data-root": "/mnt/data/.docker", | | "data-root": "/mnt/data/root/docker" |
| "log-driver": "json-file",
| |
| "log-opts": {
| |
| "max-size": "10m",
| |
| "max-file": "3"
| |
| }
| |
| } | | } |
| </syntaxhighlight> | | </syntaxhighlight> |
| # Сохраните и закройте файл: <kbd>Ctrl</kbd>+<kbd>S</kbd> и <kbd>Ctrl</kbd>+<kbd>X</kbd>.
| |
|
| |
| В параметре ''log-opts'' задаются ограничения на журналы контейнеров, [https://docs.docker.com/config/containers/logging/configure/ подробнее].
| |
|
| |
|
| == Установка == | | == Установка == |
| После того, как мы указали, где будут храниться контейнеры, устанавливаем сам docker:
| |
| <syntaxhighlight lang="bash"> | | <syntaxhighlight lang="bash"> |
| apt update && apt install docker-ce docker-ce-cli containerd.io | | apt update |
| </syntaxhighlight> | | </syntaxhighlight> |
|
| |
|
| Чтобы проверить, что всё работает — запустите контейнер <code>hello-world</code>:
| |
| <syntaxhighlight lang="bash"> | | <syntaxhighlight lang="bash"> |
| docker run hello-world | | apt-get install docker-ce docker-ce-cli containerd.io |
| </syntaxhighlight> | | </syntaxhighlight> |
| Если в консоли появилась надпись <code>Hello from Docker!</code>, docker установлен и работает.
| |
| Иногда требуется перезагрузка командой: <syntaxhighlight lang="bash">reboot</syntaxhighlight> затем повторить проверку.
| |
|
| |
|
| == Полезные команды ==
| |
| Список всех доступных команд можно посмотреть во встроенной справке:
| |
| <syntaxhighlight lang="bash"> | | <syntaxhighlight lang="bash"> |
| docker --help
| | docker run hello-world |
| </syntaxhighlight>
| |
| | |
| Ниже вы найдёте использование основных команд.
| |
| | |
| Получить образ:
| |
| <syntaxhighlight lang="console">
| |
| # 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
| |
| </syntaxhighlight>
| |
| | |
| Список локальныйх образов:
| |
| <syntaxhighlight lang="console">
| |
| # 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
| |
| </syntaxhighlight>
| |
| | |
| Запуск образа:
| |
| <syntaxhighlight lang="console">
| |
| # docker run -it --name esphome 0401c33b2983
| |
| 742dd9e812ea8ab37f0bcd9b4f6dda34d70de5ae92ddec6557a2f1a213ed859b
| |
| </syntaxhighlight>
| |
| | |
| Запущенный образ — это контейнер. Чтобы контейнер запускался автоматически, добавьте параметр <code>--restart unless-stopped</code>, [https://docs.docker.com/config/containers/start-containers-automatically/ подробнее].
| |
| | |
| Если контейнер запущен с параметрами <code>-it</code>, то вы можете выйти из консоли без остановки контейнера, для этого нажмите по очереди сочетания клавиш <kbd>Ctrl</kbd>+<kbd>p</kbd> и <kbd>Ctrl</kbd>+<kbd>q</kbd>. Чтобы выйти из консоли и остановить контейнер, нажмите <kbd>Ctrl</kbd>+<kbd>c</kbd>.
| |
| | |
| Список контейнеров со статусами:
| |
| <syntaxhighlight lang="console">
| |
| # 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
| |
| </syntaxhighlight>
| |
| | |
| Подключиться к запущенному контейнеру:
| |
| <syntaxhighlight lang="bash">
| |
| docker attach esphome
| |
| </syntaxhighlight>
| |
| | |
| Остановка контейнера:
| |
| <syntaxhighlight lang="console">
| |
| # docker stop esphome
| |
| esphome
| |
| </syntaxhighlight>
| |
| | |
| Удалить остановленный контейнер:
| |
| <syntaxhighlight lang="console">
| |
| # docker rm esphome
| |
| esphome
| |
| </syntaxhighlight>
| |
| | |
| Удалить образ:
| |
| <syntaxhighlight lang="console">
| |
| # 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
| |
| </syntaxhighlight> | | </syntaxhighlight> |
|
| |
| == Полезные ссылки ==
| |
| * [[Home Assistant | Установка Home Assistant через docker]]
| |
| * [https://docs.docker.com/engine/install/debian/ Оригинальная инструкция по установке Docker]
| |