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

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

# 特权容器

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

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

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

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

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

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

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

# 非特权容器

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

# 查看root用户情况

1
2
3
4
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 添加两行

1
2
lxc.idmap: u 0 100000 65536
lxc.idmap: g 0 100000 65536

# 配置目录权限

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

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

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

# pve上映射用户

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

1
lxc.idmap = u 1000 1000 1

nano /etc/subgid 添加一行

1
lxc.idmap = g 1000 1000 1

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

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计