, последнее обновление:

Запускаем Docker в LXC на Proxmox

Такое может понадобиться, например, если у вас относительно хитрая сетевая инфраструктура и надо правильно настроить маршрутизацию без геморроя с отдельными таблицами маршрутизации. В этой статье опишу необходимое для запуска Docker в LXC, а также всякие хинты по поводу запуска разнообразных приложений, если они будут.

TLDR: Docker в LXC работает очень даже распрекрасно, даже в непривелегированном контейнере.

Конфигурация LXC

Необходимо включить nesting в конфигурировации LXC контейнера:

Pasted image 20211208033452.png

Nesting нужен для возможности управлять cgroup’ами.

Проблемы с приложениями

Mailcow

Несмотря на то, что docker в LXC поднимается на ура, для mailcow надо руками поправить конфигурационный файл контейнера (/etc/pve/lxc/CONTAINERNUMBER.conf), добавив следующее:

lxc.apparmor.profile: unconfined
lxc.cgroup.devices.allow: a
lxc.cap.drop:

Первая строчка выключает apparmor для контейнера (а это нужно так как Docker внутри будет “развлекаться” с фаерволом и сетью), вторая - разрешает делать всякое со всеми нодами в /dev, третья выключает сброс ядерных capabilities.

Конечно, такая конфигурация довольно несекурна, но она позволяет запустить mailcow в Docker, который запущен в LXC. Если у вас будут более правильные конфиги для этого - милости прошу в комментарии или написать мне приватненько.