Я пытаюсь запустить контейнер Docker внутри контейнера LXC.
Однако это приводит к появлению следующей ошибки:
[ root @ DH-DockerLXC01 alex] # запуск докера fedora bash
докер: ответ об ошибке от демона: сбой при создании среды выполнения OCI: container_linux.go: 337: запуск процесса контейнера вызвал «применить крышки: операция не разрешена»: неизвестно.
ERRO [0001] ошибка ожидания контейнера: контекст отменен
Я предполагаю, что мне нужно настроить некоторую конфигурацию, чтобы она была более разрешительной, но поскольку я создал контейнер LXC с помощью virt-manager, я не уверен, с чего начать.
Обратите внимание, что контейнер LXC использует chroot для хранения, что AFAIK должно позволить докеру без проблем использовать полную AUFS, но если я ошибаюсь, поправьте меня.
Как оказалось, LXC по умолчанию не позволяет контейнерам иметь возможность CAP_MKNOD, поскольку теоретически может позволить контейнеру взять на себя управление хостом.
Это можно изменить, но это не очень хорошо документировано. Основываясь на запросе на перенос от 2015 года в списке рассылки, я смог собрать фрагмент XML, который это делает. Вам просто нужно отредактировать определение контейнера, которое находится в / etc / libvirt / lxc / [имя контейнера] /
<features>
<capabilities policy='allow'>
<mknod state='on'/>
</capabilities>
</features>
Обратите внимание, что файл может уже содержать определение, в этом случае вставьте раздел внутри этого раздел.
Возможно, вам придется перезапустить libvirt, прежде чем она вступит в силу, с помощью systemctl restart libvirtd.service
(это не приведет к перезапуску существующих контейнеров или виртуальных машин, а только к службе).
Это решение помогает привилегированным LXC, управляемым Proxmox:
lxc.apparmor.profile: unconfined
lxc.cgroup.devices.allow: a
lxc.cap.drop:
Позаботьтесь о безопасности! Источник:Запуск Docker на Proxmox