16 578
правок
(→Установка: очепятка) |
|||
(не показана 51 промежуточная версия 4 участников) | |||
Строка 1: | Строка 1: | ||
{{ | {{DISPLAYTITLE: Установка Docker на контроллер Wiren Board }} | ||
== Описание == | |||
[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 update && apt install ca-certificates curl gnupg lsb-release | ||
apt install ca-certificates curl gnupg lsb-release | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Добавьте репозиторий с пакетами docker: | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
echo | 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 | | curl -fsSL https://download.docker.com/linux/debian/gpg | 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 | mkdir /mnt/data/etc/docker && ln -s /mnt/data/etc/docker /etc/docker | ||
ln -s /mnt/data/etc/docker /etc/docker | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Мы будем хранить образы на встроенном накопителе, если вам нужно больше места под образы — используйте внешнюю флешку. | |||
Создайте папку для хранения образов: | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
mkdir /mnt/data/ | mkdir /mnt/data/.docker | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<syntaxhighlight lang="bash"> | Укажите в файле настроек '''daemon.json''' созданную выше папку: | ||
# Откройте файл в редакторе: | |||
#:<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/ | "data-root": "/mnt/data/.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"> | |||
apt update && apt install docker-ce docker-ce-cli containerd.io | |||
</syntaxhighlight> | |||
Чтобы проверить, что всё работает — запустите контейнер <code>hello-world</code>: | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
docker run hello-world | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Если в консоли появилась надпись <code>Hello from Docker!</code>, docker установлен и работает. | |||
Иногда требуется перезагрузка командой: <syntaxhighlight lang="bash">reboot</syntaxhighlight> затем повторить проверку. | |||
== Полезные команды == | |||
Список всех доступных команд можно посмотреть во встроенной справке: | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
docker --help | |||
</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> | ||
Подключиться к запущенному контейнеру: | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
docker | 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] |