为保证宿主机环境的纯粹,所以我们选择通过在LXC中安装Docker来共享宿主机硬盘
安装:
创建一台CT,名为Share,取消非特权容器的勾,模版使用alpine,内存8G,硬盘100G,创建完不要启动
选中刚创建的CT,选项>功能,选编辑,勾选"嵌套"
在宿主机Shell中操作
# 宿主机安装nfs核心库
apt-get install -y nfs-kernel-server
# 加载nfs模块
modprobe nfs
# 将宿主目录映射给CT
pct set 100 -mp0 /usr/lib/modules/$(uname -r),mp=/lib/modules/$(uname -r),ro=1,backup=0
pct set 100 -mp1 /mnt/pve/nas,mp=/nas
参数说明:
CTID: 100
宿主目录: /mnt/pve/nas
CT目录: /nas
- 修改宿主机CT配置文件
echo "lxc.cap.drop:
lxc.cap.drop: mac_admin mac_override sys_time sys_module sys_rawio
lxc.cap.drop: audit_write
lxc.cap.drop: ipc_owner
lxc.cap.drop: mknod
lxc.cap.drop: sys_nice
lxc.cap.drop: sys_pacct
lxc.cap.drop: sys_ptrace
lxc.cap.drop: sys_rawio
lxc.cap.drop: sys_resource
lxc.cap.drop: sys_tty_config
lxc.cap.drop: syslog
lxc.cap.drop: wake_alarm" >> /etc/pve/lxc/100.conf
- 启动CT
apk add nfs-utils
modprobe nfs
- 在CT内安装docker
# 使用国内镜像
sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
apk update
#安装docker
apk add docker
# 添加自启动
rc-update add docker boot
# 启动docker服务(会有报错,不影响)
service docker start
- 启动NFS服务
(网络必须用host,原因还没研究出来)
docker run -d \
--privileged \
--network=host \
--name=nfs-server \
--restart=always \
-e TZ=Asia/Shanghai \
-e NFS_MOUNT_PORT=2049 \
-e ALLOWED_CLIENT=192.168.0.0/24 \
-p 2049:2049 \
-p 111:111 \
-p 32765-32767:32765-32767 \
-v /lib/modules:/lib/modules \
-v /nas/nfs:/data \
--cap-add=ALL \
--cap-add=SYS_ADMIN \
--cap-add=SETPCAP \
mekayelanik/nfs-server-alpine:latest
- 打开宿主机防火墙端口2049/tcp
使用
- 装载
mount -v -o vers=4.2,loud ${CT的IP或域名}:/share /mount/path/to/ROOT-SHARE-DIR
- 添加自启动
vi /etc/fstab
${CT的IP或域名}:/share ${要挂载的目录} nfs vers=4.2,defaults,proto=tcp,port=2049 0 0