设置 LXD Container raw.idmap 的语法

Mil*_*use 4 linux container ubuntu lxc

我正在按照此处所述执行lxc 容器内安装主机驱动器的过程。在那篇文章中,作者将raw.idmap设置为这样:

lxc config set zesty raw.idmap 'both 1000 1000'
Run Code Online (Sandbox Code Playgroud)

我想按照lxd idmap 文档中的描述自定义 gid 和 uid 的映射。其中显示了一个示例映射,如下所示:

both 1000 1000
uid 50-60 500-510
gid 10000-110000 10000-20000
Run Code Online (Sandbox Code Playgroud)

我正在为实际设置这个语法而苦苦挣扎,因为第一篇文章中的命令似乎不适用于多行配置,我已经尝试在一行中输入所有内容并使用 JSON,但没有运气,因为容器会出现配置错误并且无法启动。

配置它的正确方法是什么?

小智 7

另一种实现自动化的方法可以如下所述(https://ubuntu.com/blog/custom-user-mappings-in-lxd-containers):

printf "uid $(id -u) 1000\ngid $(id -g) 1000" | lxc config set your_container raw.idmap -
lxc restart your_container
Run Code Online (Sandbox Code Playgroud)

因此它将检索您当前的 UID 和 GID 并将它们映射到容器内的 UID 1000 和 GID 1000。如果您正在使用其他用户,则可以更改此值。此外,您需要重新启动容器才能使更改生效。


小智 5

此问题已在LXC 用户邮件列表中得到解答:

idmapblob 一样,如果要分配多个值,则必须发送多行。例子:

echo -en "both 1003 1003\nboth 1004 1004" | lxc config set mycontainer raw.idmap -
Run Code Online (Sandbox Code Playgroud)