如何在LXD(Linux容器)中添加或挂载目录
我有两个正在运行的LXD容器。
一个用于Nginx,另一个用于处理数据。
我需要在两个容器之间共享数据。
如何在两个之间添加或挂载共享目录?
可以使用lxc命令管理正在运行的容器的设备。
要将目录等设备添加到容器,请使用lxc config device add命令。
本教程说明如何将主机目录添加到LXD容器
如何在LXD/LXC中添加或挂载目录
在LXD中挂载目录的过程如下:
- 打开终端应用程序
- 对于使用ssh命令的远程LXD/Linux服务器登录
- 要将主机
/wwwdata /
目录挂载到名为c1'的LXD容器中的
/var/www/html /中,请运行:`lxc config device add c1 sharedwww disk source =/wwwdata/path =/var/www/html / - 通过运行以下命令来验证目录是否已安装到c1容器上:`lxc exec c1-" ls/var/www/html"
让我们详细了解将目录以只读和读/写模式安装到容器上的所有步骤。
在LXD中挂载主目录(只读)
语法如下:
lxc config device add {container-name} {name} disk source={/path/to/source/dir/} path={/path/to/dest/onto/container/}
让我们创建一个名为c1的新容器:
lxc launch images:centos/8/amd64 c1 lxc list c1
在名为c1的容器上创建一个名为/dest /的新目录,运行:
lxc exec c1 -- "mkdir /dest/" lxc exec c1 -- "ls -ld /dest/"
将$HOME(/home/Hyman /)目录挂载在/dest /的c1上(只读):
lxc config device add c1 myhomedir disk source=$HOME path=/dest/
或者
lxc config device add c1 myhomedir disk source=/home/Hyman/ path=/dest/
请注意,如果/dest /目录不存在,则将由上述lxc命令自动创建。
现在,将该磁盘添加到c1上,进行验证:
lxc config device show c1
重新启动容器以验证设置仍然有效:
lxc restart c1 lxc config device show c1 ## login onto c1 container ## lxc exec c1 bash cd /dest/ ls -l ## is it read-only or read-write? ## mkdir foo exit
如何从LXD容器中删除/删除/卸载目录
要从c1容器中删除容器设备,例如名为myhomedir的磁盘,请运行:
lxc config device remove c1 myhomedir `Device myhomedir removed from c1`
验证一下:
lxc config device show c1 `{}`
将共享的主机目录添加到LXC/LXD容器(读写模式)
默认情况下,不允许root用户从主机修改容器内的文件。
它是LXD的安全功能。
换句话说,如果需要对装入的文件夹具有读写访问权限,则需要重新映射用户ID。
下属的GID文件
/etc/subgid中的每一行都包含一个用户名和允许用户使用的一系列下级组ID。
该文件使用newgidmap命令指定普通用户可以用来在用户名称空间中配置gid映射的组ID。
这由三个用冒号(:
)分隔的字段指定。
使用cat命令:
cat /etc/subgid
输出示例:
Hyman:100000:65536
Whre字段是:
- Hyman主机上的登录名或UID
- 100000数字下属组ID
- 65536数字下属组ID计数
下级uid文件
同样,"/etc/subuid"中的每一行都包含一个用户名和允许该用户使用的一系列下级用户ID。
该文件使用newuidmap命令指定普通用户可以用来在用户名称空间中配置uid映射的用户ID。
要查看此文件,请运行:
cat /etc/subuid
输出示例:
Hyman:100000:65536
如何允许LXD在主机上重新映射您的用户ID
使用id命令找出您的uid/gid:
id
输出示例:
uid=1000(Hyman) gid=1000(Hyman) groups=1000(Hyman),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),115(lpadmin),116(sambashare),998(lxd)
接下来,我将允许以root用户身份运行的LXD恶魔在容器内重新映射我的主机用户ID:
echo "root:1000:1" | sudo tee -a /etc/subuid /etc/subgid
这是一次设置,无需重复。
确保文件已更新:
cat /etc/{subuid,subgid}
如何在容器内重新映射用户ID
在名为Hyman的用户的容器内找到UID(用户帐户必须存在于c1中):
lxc exec c1 bash grep ^Hyman /etc/passwd
如果上述grep命令未显示任何输出,请创建一个名为的用户帐户:
lxc exec c1 bash adduser Hyman id Hyman exit
执行以下命令以将UID和GID映射到主机UID(1000)到c1容器1000 UID(插孔):
lxc config set c1 raw.idmap "both 1000 1000"
重新启动容器以使设置生效:
lxc restart c1
最后,以读/写模式挂载和映射目录:
lxc config device add c1 myhomedir disk source=/home/Hyman/ path=/home/Hyman/ lxc config show c1
测试一下
lxc exec c1 bash cd /home/Hyman mkdir delta echo "www.theitroad.com" > test.txt cat test.txt rmdir delta ## back to host ## exit ## make sure bar.txt still exists on host ## ls -l test.txt cat test.txt
以读写模式成功将主机/home/Hyman /目录安装到c1容器上