Технология разворачивания приложений в виде Docker контейнеров уже стала стандартом для Linux. Docker контейнеры особенно удобны для развертывания сложных систем в дата-центрах, корпоративных центрах обработки данных, и т.д. Docker контейнеры так же отлично подходят и для встраиваемых систем. Docker успешно работает в Armbian/Linux на x86/ARM32/ARM64/RISC-V устройствах Raspberry/Banana/Orange/Rock/Nano Pi, поэтому для упрощения процесса развертывания, установим Docker из готового скрипта от самой компании.
Технология Docker позволяет существенно упростить развертывание и доставку приложений на устройство. Одно из самых главных качеств Docker является его атомарность. Контейнер целиком либо развернется, либо нет. В случае сбоя запуска нового контейнера, можно применить систему A/B, при которой контейнер предыдущей версии не удаляется, а происходит откат при невозможности запуска нового контейнера. Подобная манипуляция выполняется быстро без задержек, что снижает время простоя устройства. При традиционном подходе, пошагового обновления, в случае сбоя в процессе обновления, откат изменений становится весьма сложной задачей. Европейская компания Toradex в своих встраиваемых решениях для автомобильных грузоперевозок для доставки и развертывание приложений использует технологию Docker. Компанией был разработан модуль Verdin на базе NXP i.MX8 M Mini SoC, который взаимодействует с автомобилем через CAN шину для получения телеметрии от автомобиля и отправляет эти данные в облако. Работа с CAN шиной и отправка данных в облако выполняется в Docker контейнере.
Подробнее почитать в публикации Reading Vehicle OBD-II data through CAN within a containerized application in Embedded Linux — CNX SOFTWARE.
Использование Docker контейнеров для встраиваемых систем хорошо продемонстрировано на примере запуска метеостанции на одноплатном компьютере Banana Pi M64 в публикации Метеостанция на Banana Pi M64 (Linux, C#, Docker, RabbitMQ, AvaloniaUI). В решение используется три контейнера, первый считывает данные от датчиков, второй контейнер RabbitMQ обеспечивает передачу и хранение данных, третий контейнер реализует графический интерфейс для взаимодействия с пользователем.
Установка Docker для архитектуры x86/ARM32/ARM64
Установим Docker на одноплатный компьютер Banana Pi BPI-M64, версия Armbian 21.02.1 (основана на Ubuntu 18.04.5 LTS, ядро Linux 5.10.12). uname: Linux bananapim64 5.10.12-sunxi64 #21.02.1 SMP Wed Feb 3 20:42:58 CET 2021 aarch64 aarch64 aarch64 GNU/Linux.
На официальном сайте опубликованы подробные инструкции для установки Docker в различных дистрибутивах, таких как Linux, CentOS, Debian, Fedora, RHEL, SLES, Ubuntu. Данная инструкция была подробно рассмотрена в публикации Установка Docker для ARM и 64-bit ARM (Armbian, Linux). Но что если вам необходимо автоматизировать процесс установки для разных Linux систем? На этот случай по адресу get.docker.com размещен скрипт автоматической установки Docker. Все что вам потребуется это загрузить скрипт установки и его запустить. Скрипт автоматически пропишет репозиторий, ключи, обновит систему, и установит необходимые пакеты.
Скрипт автоматической установки Docker для Linux, подходит для x86/ARM32/ARM64 систем:
sudo apt-get update sudo apt-get install -y curl curl -fsSL https://get.docker.com -o get-docker.sh chmod +x get-docker.sh sudo ./get-docker.sh
Вначале загружается файл get-docker.sh с сервера get.docker.com, затем выставляем права на запуск, и запускаем скрипт установки с правами sudo .
Для проверки текущей версии Docker необходимо выполнить команду:docker version
Результат выполнения:
root@bananapim64:~# docker version Client: Docker Engine - Community Version: 20.10.11 API version: 1.41 Go version: go1.16.9 Git commit: dea9396 Built: Thu Nov 18 00:35:52 2021 OS/Arch: linux/arm64 Context: default Experimental: true Server: Docker Engine - Community Engine: Version: 20.10.11 API version: 1.41 (minimum version 1.12) Go version: go1.16.9 Git commit: 847da18 Built: Thu Nov 18 00:34:25 2021 OS/Arch: linux/arm64 Experimental: false containerd: Version: 1.4.4 GitCommit: 05f951a3781f4f2c1911b05e61c160e9c30eaa8e runc: Version: 1.0.0-rc93 GitCommit: 12644e614e25b05da6fd08a38ffa0cfe1903fdec docker-init: Version: 0.19.0 GitCommit: de40ad0
Проверить статус работы Docker сервиса, команда:
sudo systemctl status docker
Дополнительные настройки Docker смотрите в публикации Установка Docker для ARM и 64-bit ARM (Armbian, Linux).
Установка Docker для архитектуры RISC-V
Для архитектуры RISC-V существуют неофициальные пакеты установки такие как:
- docker.io
- docker-compose
- docker-compose-v2
- docker-doc
- podman-docker
Для установки Docker на RISC-V платформе необходимо установить пакет docker.io , выполните следующие команды:
sudo apt-get update sudo apt-get install -y docker.io