답변:
짧은 대답은 할 수 없다는 것입니다. LXC 컨테이너는 커널을 호스트와 공유하며 기본적으로 모듈을로드 할 수 없습니다 (이는 매우 위험하므로).
표준 권장 사항은 컨테이너를 시작하기 전에 호스트에 모듈을로드하는 것입니다. 오래된 init 스크립트를 사용하거나 lxc 후크를 사용 하여이 작업을 수행 할 수 있습니다 (자세한 내용은 최근 게시물을 참조하십시오 : https://www.stgraber.org/2013/12/23/lxc-1-0-some- 고급 컨테이너 사용 / )
이 답변의 목적을 위해 컨테이너 이름이 ""foo "라고 가정합니다.
/var/lib/lxc/foo/config
내 지시 사항에 문제가있을 경우를 대비 하여 호스트에서의 사본을 저장하십시오 .
SYS_MODULE
기능 을 유지하려면 컨테이너를 구성해야 합니다.
이러한 구성은 컨테이너에 커널과 호스트를 인계 할 수있는 기능을 제공합니다 .
이렇게하려면 "lxc.cap.drop"
또는 "lxc.cap.keep"
구성 줄 을 변경해야 합니다.
"lxc-create --name foo --template download -- ..."
다음 으로 만들어진 Ubuntu 19.04 게스트를 실행중인 경우 :
/var/lib/lxc/foo/config
라인을 포함합니다
lxc.include = /usr/share/lxc/ubuntu.common.conf
/usr/share/lxc/ubuntu.common.conf
라인을 포함합니다
lxc.include = /usr/share/lxc/config/common.conf
/usr/share/lxc/config/common.conf
이 같은 줄을 포함합니다
lxc.cap.drop = mac_admin mac_override sys_time sys_module sys_rawio
마지막 줄을 끝 /var/lib/lxc/foo/config
(또는 뒤에있는 곳 "include /usr/share/lxc/ubuntu.common.conf"
)으로 복사 한 다음 "sys_module"
해당 목록에서 삭제 해야합니다.
컨테이너에 커널 모듈의 사본이 필요합니다.
호스트가 Ubuntu 커널을 실행중인 경우 "sudo apt install kernel-image-$(uname -r)"
게스트 와 같은 작업을 수행 할 수 있습니다 .
그렇지 않으면 호스트에서 다음과 같은 작업을 수행해야 할 수도 있습니다 (컨테이너의 이름이 "foo"라고 가정).
mkdir -p /var/lib/lxc/foo/rootfs/lib/modules
cp -apr /lib/modules/$(uname -r) /var/lib/lxc/foo/rootfs/lib/modules/
그런 다음 게스트 foo가 실행 중이면 종료하고 다음과 같이 다시 시작하십시오 "lxc-start --name foo"
.
LXC 컨테이너는 이제 커널 모듈을로드 및 언로드 할 수 있어야합니다.