Docker

Версия 39.1 от Роман Воробьев на 08.08.2021 03:08

Главной особенностью Docker в ОСнова является то, что контейнер работает в режимах защиты памяти PaX MPROTECT (ели не отключен) и замкнутой программной среды (ЗПС) (если включен).

Если контейнер не базируется на ОС ОСнова, для работы в режиме замкнутой программной среды (ЗПС), его содержимое должно быть подписано. Это возможно сделать через наложение дампа
$ setfattr --restore=<dumpfile>
либо через подпись
$ evmctl
экспортированного контейнера с последующей запаковкой (с учетом расширенных атрибутов)
$ tar --xattrs-include=user.pax.flags --xattrs-include=security.ima --xattrs-include=security.NESSCTX
и импортом.

Если защита памяти PaX MPROTECT не отключена и контейнер не базируется на ОС ОСнова, некоторое ПО, например Java, не будет функционировать корректно в контейнере.
Возможна установка в контейнер paxrat или ручная разметка исключений через
$ sudo setfattr -n user.pax.flags -v m <filename>
или через наложение дампа
$ sudo setfattr --restore=<dump>
или через запуск контейнера в контексте безопасности NESS, отключающем защиту памяти PaX MPROTECT.

Контейнер может иметь определенный установленный контекст безопасности NESS. По умолчанию контекст пустой.
Возможен запуск всех контейнеров с контекстом, отключающим защиту памяти PaX MPROTECT.
Для этого в файле  /lib/systemd/system/docker.service в конце секции [Service]  дописать:
NESSCTX=t=30,50
И перечитать конфигурацию, перезапустить Docker.
sudo systemctl daemon-reload
sudo systemctl restart docker

Установка

sudo apt install docker.io
Добавить пользователя в группу docker, перелогиниться.
sudo usermod -aG docker ПОЛЬЗОВАТЕЛЬ

Создание образа ОСнова

Для создания образа требуется наличие первого установочного диска, или его iso образа, или доступ к сетевому репозиторию.

sudo apt install debootstrap

sudo mount /dev/cdrom /mnt

(или sudo mount -o loop onyx-Version-disk1.iso /mnt )

sudo debootstrap --variant=minbase --keyring /usr/share/apt/osnova.gpg  --components=main,contrib,non-free onyx onyx /mnt

sudo tar --xattrs-include=user.pax.flags --xattrs-include=security.ima --xattrs-include=security.NESSCTX  -C onyx/ -c . | docker import - onyx

sudo umount /mnt

Тестовый запуск контейнера

docker run -it --rm onyx bash