Docker: различия между версиями

5753 байта добавлено ,  3 месяца назад
→‎Установка: очепятка
(→‎Установка: очепятка)
 
(не показаны 24 промежуточные версии 4 участников)
Строка 2: Строка 2:
== Описание ==
== Описание ==
[https://docker.com Docker] — программное обеспечение для запуска приложений в изолированной среде. С его помощью можно упаковать приложение со всем его окружением и зависимостями в контейнер и потом развернуть его на любой ОС Linux. Такой подход позволяет избежать конфликта используемых приложением библиотек с установленными в основной системе.
[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].
С помощью docker-контейнеров распространяется много открытого ПО, например, [[Home Assistant]] и [https://www.openhab.org/ openHAB].
Строка 26: Строка 30:
<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 | 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>


Строка 40: Строка 51:
Создайте папку для хранения образов:
Создайте папку для хранения образов:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
mkdir /mnt/data/root/.docker
mkdir /mnt/data/.docker
</syntaxhighlight>
</syntaxhighlight>


Строка 46: Строка 57:
# Откройте файл в редакторе:
# Откройте файл в редакторе:
#:<syntaxhighlight lang="bash">
#:<syntaxhighlight lang="bash">
mcedit /etc/docker/daemon.json
nano /etc/docker/daemon.json
</syntaxhighlight>
</syntaxhighlight>
# Вставьте в него строки:
# Вставьте в него строки:
#:<syntaxhighlight lang="js">
#:<syntaxhighlight lang="js">
{
{
   "data-root": "/mnt/data/root/.docker"
   "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:
После того, как мы указали, где будут храниться контейнеры, устанавливаем сам docker:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
apt update && apt install docker-ce docker-ce-cli containerd.io
apt update && apt install docker-ce docker-ce-cli containerd.io
Строка 67: Строка 85:
</syntaxhighlight>
</syntaxhighlight>
Если в консоли появилась надпись <code>Hello from Docker!</code>, docker установлен и работает.
Если в консоли появилась надпись <code>Hello from Docker!</code>, docker установлен и работает.
Иногда требуется перезагрузка командой: <syntaxhighlight lang="bash">reboot</syntaxhighlight> затем повторить проверку.
== Полезные команды ==
Список всех доступных команд можно посмотреть во встроенной справке:
<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 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>


== Полезные ссылки ==
== Полезные ссылки ==
* [[Home Assistant | Установка Home Assistant через docker]]
* [[Home Assistant | Установка Home Assistant через docker]]
* [https://docs.docker.com/engine/install/debian/ Оригинальная инструкция по установке Docker]
* [https://docs.docker.com/engine/install/debian/ Оригинальная инструкция по установке Docker]