pve lxc 挂载宿主机 目录 最简单方法 (特权容器)

pve

主要有两种情况,1特权容器 2 无特权容器

#特权容器

如果lxc创建的时候 没有勾选 无特权容器 那么直接挂载即可

例如 lxc 的id是50443(就是pve里面显示的虚拟机和ct的那个数字) ,要把pve的 /nvme/lxc_mount/nginxWebUI挂载到lxc容器里面的 /home/nginxWebUI

范例挂载这个目录出来是为了pve能使用nginxwebui自己签名的ssl证书,以及其他服务也可以用。

plaintext
pct set 50443 -mp1 /nvme/lxc_mount/nginxWebUI,mp=/home/nginxWebUI

执行完成后 不需要重启 即可生效。
上面的命令等同 在 /etc/pve/lxc/50443.conf 添加一行

plaintext
mp1: /nvme/lxc_mount/nginxWebUI,mp=/home/nginxWebUI

往后就mp1、mp2、mp3 。。。。

#非特权容器

基于安全性考虑,以及嵌套docker的时候的一些问题,创建ct容器的时候,通常使用非特权容器。 这个时候直接挂载的目录可能会有权限问题。
其实可以用特权用户运行docker 查看 : http://dev.leiyanhui.com/pve/kxc-docker-err

#查看root用户情况

plaintext
grep root /etc/subgid /etc/subuid
-------------
/etc/subgid:root:100000:65536
/etc/subuid:root:100000:65536

root的从属用户起始id为100000,数量65536个。

#修改lxc的用户

把lxc里面的用户映射到pve的root用户
容器内root(id=0)映射为pve 服务器id 100000,递增65536个,即容器内用户id 0-65535对应服务器100000-165535
nano /etc/pve/lxc/50443.conf 添加两行

plaintext
lxc.idmap: u 0 100000 65536
lxc.idmap: g 0 100000 65536

#配置目录权限

将挂载目录让容器内root可读写的话在服务器内将所有者更改为id 100000。

plaintext
chown -R 100000:100000 /nvme/lxc_mount/nginxWebUI

对应目录不可以是非linux原生文件系统,比如ntfs exfat均不可以

#pve上映射用户

映射pve用户,服务器和容器内有相同ID的用户。
nano /etc/subuid 添加一行

plaintext
lxc.idmap = u 1000 1000 1

nano /etc/subgid 添加一行

plaintext
lxc.idmap = g 1000 1000 1

本文参考:https://www.haiyun.me/archives/1419.html

评论