PVE-Docker服务部署

概述

本文主要介绍在Proxmox VE(PVE)虚拟化环境中,如何构建LXC容器以隔离PVE环境。我们将使用PVE中的模版创建LXC容器,并在其中安装Docker服务。通过这种方式,我们可以在PVE虚拟环境中安全地部署和管理Docker应用。

本田概念

软件源更新

1
sed -e 's/www.debian.org/mirrors.tuna.tsinghua.edu.cn/' tmp/sources.list.backup > /etc/apt/sources.list

docker安装

1
curl -fsSL get.docker.com -o /tmp/get-docker.sh
1
sh /tmp/get-docker.sh --mirror Aliyun

配置显卡

通过 ls -l /dev/dri 命令查询设备号

在PVE终端打开 vim /etc/pve/lxc/[CT_ID].conf 文件,写入如下代码,将设备挂载到LXC容器中。

1
2
3
4
5
lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.cgroup2.devices.allow: c 29:0 rwm
lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir
lxc.mount.entry: /dev/fb0 dev/fb0 none bind,optional,create=file

PVE下默认限制了LXC容器权限,不能直接挂载NFS共享文件。简单粗暴的方法是直接取消限制,修改容器配置文件,追加一行。这种做法取消所有安全规则,不够安全,下面是单独设置nfs的方法,参考

1
lxc.apparmor.profile: unconfined

portainer安装

安装docker管理服务,提供可视化的界面。采用官方镜像进行安装

1
docker volume create portainer_data
1
2
3
4
5
6
docker run -d \
-p 8000:8000 -p 9000:9000 \
--name=portainer --restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer

-d: 后台运行; --restart: 当容器退出时的重启策略;

挂载Samba服务

软件安装

通过安装如下SMB组件:

1
apt install cifs-utils -y

采用如下工具查询服务信息:

1
smbclient -L <服务器IP或主机名>  -U  <用户名>

手动挂载

1
mount -t cifs <共享点路径(//192.168.1.12/share)> <挂载点(/mnt)> -o username=<用户名>

或者

1
mount.cifs <共享点路径(//192.168.1.12/share)> <挂载点(/mnt)> -o username=<用户名>

通过 mount -l | grep <挂载点> 命令查看挂载情况。

开机自动挂载

通过配置 /etc/fstab 文件

1
<共享点路径> <挂载点> cifs username=<用户名>,password=<密码> 0 0

该方式存在账号密码泄露风险,故可以使用文件保存账号信息,配置如下:

1
<共享点路径> <挂载点> cifs credentials=<凭证文件路径> 0 0

凭证文件中的内容格式如下:

1
2
3
username=value
password=value
domain=value [option]

其它参数

1
<共享点路径> <挂载点> cifs credentials=<凭证文件路径>,iocharset-utf8,rw 0 0

iocharset:

执行挂载

1
mount -a

安装jellyfin服务

nyanmisaka/jellyfin:latest

  • 端口8096映射
  • 设备 /devdri 映射

如果出现如下错误

1
invalid CapDrop: capability not supported by your kernel or not available in the current environment: "CAP_MAC_ADMIN"

尝试在conf文件中添加:

1
lxc.cap.drop: 

安装 Aria2

  • 镜像名:p3terx/aria2-pro

环境变量

1
2
3
4
5
6
7
8
9
10
11
- PUID=65534
- PGID=65534
- UMASK_SET=022
- RPC_SECRET=<password>
- RPC_PORT=6800
- LISTEN_PORT=6888
- DISK_CACHE=64M
- IPV6_MODE=false
- UPDATE_TRACKERS=true
- CUSTOM_TRACKER_URL=
- TZ=Asia/Shanghai

挂载卷

1
2
3
volumes:
- ${PWD}/aria2-config:/config
- ${PWD}/aria2-downloads:/downloads

网络端口

如果桥接模式,需要暴露端口号

1
2
3
- 6800:6800
- 6888:6888
- 6888:6888/udp

安装AriaNg

镜像: p3terx/ariang