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

2312 байт добавлено ,  2 месяца назад
→‎Установка: очепятка
(→‎Установка: очепятка)
 
(не показана 21 промежуточная версия 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>


Строка 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/.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> затем повторить проверку.


== Полезные команды ==
== Полезные команды ==
Строка 74: Строка 93:
</syntaxhighlight>
</syntaxhighlight>


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


Получить образ:
Получить образ:
Строка 105: Строка 124:
Запуск образа:
Запуск образа:
<syntaxhighlight lang="console">
<syntaxhighlight lang="console">
# ddocker run -d 0401c33b2983
# docker run -it --name esphome 0401c33b2983
f8370632b7082e22a3460599b57425fd69074e0462f92c61da455d4a8c1e9960
742dd9e812ea8ab37f0bcd9b4f6dda34d70de5ae92ddec6557a2f1a213ed859b
</syntaxhighlight>
</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>.


Список контейнеров со статусами:
Список контейнеров со статусами:
Строка 115: Строка 136:
# docker ps -a
# docker ps -a
CONTAINER ID        IMAGE              COMMAND                  CREATED            STATUS                      PORTS              NAMES
CONTAINER ID        IMAGE              COMMAND                  CREATED            STATUS                      PORTS              NAMES
f8370632b708       0401c33b2983        "/entrypoint.sh dash…"  26 seconds ago      Up 25 seconds              6052/tcp            inspiring_archimedes
742dd9e812ea       0401c33b2983        "/entrypoint.sh dash…"  19 seconds ago      Up 18 seconds              6052/tcp            esphome
b87586003c09        hello-world        "/hello"                28 minutes ago      Exited (0) 28 minutes ago                      admiring_curie
b87586003c09        hello-world        "/hello"                38 minutes ago      Exited (0) 38 minutes ago                      admiring_curie
</syntaxhighlight>
 
Подключиться к запущенному контейнеру:
<syntaxhighlight lang="bash">
docker attach esphome
</syntaxhighlight>
</syntaxhighlight>


Остановка контейнера:
Остановка контейнера:
<syntaxhighlight lang="console">
<syntaxhighlight lang="console">
# docker stop f8370632b708
# docker stop esphome
f8370632b708
esphome
</syntaxhighlight>
</syntaxhighlight>


Удалить остановленный контейнер:
Удалить остановленный контейнер:
<syntaxhighlight lang="console">
<syntaxhighlight lang="console">
# docker rm f8370632b708
# docker rm esphome
f8370632b708
esphome
</syntaxhighlight>
</syntaxhighlight>