飞牛OS安装NVIDIA Container Toolkit
前端时间从群晖迁移到飞牛OS,结果发现飞牛在套件里提供的英伟达显卡驱动不仅不带给Docker使用的Nvidia Container Toolkit,并且也存在缺陷,导致后期手动安装nctk时Docker无法调用。经过分析,问题主要出在没有库文件的符号链接以及访问权限不够上。以下是在商店里安装驱动后,完整的解决方案。
1.安装nctk并手动创建符号链接
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://mirrors.ustc.edu.cn/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://nvidia.github.io#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://mirrors.ustc.edu.cn#g' | \
tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt update && sudo apt install nvidia-container-toolkit
nvidia-ctk runtime configure --runtime=docker --config=/etc/docker/daemon.json
ln -sf /usr/lib/x86_64-linux-gnu/libnvidia-ml.so.560.28.03 /usr/lib/x86_64-linux-gnu/libnvidia-ml.so.1
ln -sf /usr/lib/x86_64-linux-gnu/libcuda.so.560.28.03 /usr/lib/x86_64-linux-gnu/libcuda.so.1
ln -sf /lib/x86_64-linux-gnu/libGLESv2_nvidia.so.560.28.03 /lib/x86_64-linux-gnu/libGLESv2_nvidia.so.2
ln -sf /lib/x86_64-linux-gnu/libcudadebugger.so.560.28.03 /lib/x86_64-linux-gnu/libcudadebugger.so.1
ln -sf /lib/x86_64-linux-gnu/libEGL_nvidia.so.560.28.03 /lib/x86_64-linux-gnu/libEGL_nvidia.so.0
ln -sf /lib/x86_64-linux-gnu/libGLESv1_CM_nvidia.so.560.28.03 /lib/x86_64-linux-gnu/libGLESv1_CM_nvidia.so.1
ln -sf /lib/x86_64-linux-gnu/libnvidia-fbc.so.560.28.03 /lib/x86_64-linux-gnu/libnvidia-fbc.so
ln -sf /lib/x86_64-linux-gnu/libnvidia-fbc.so.560.28.03 /lib/x86_64-linux-gnu/libnvidia-fbc.so.1
ln -sf /lib/x86_64-linux-gnu/libnvidia-cfg.so.560.28.03 /lib/x86_64-linux-gnu/libnvidia-cfg.so
ln -sf /lib/x86_64-linux-gnu/libnvidia-cfg.so.560.28.03 /lib/x86_64-linux-gnu/libnvidia-cfg.so.1
ln -sf /lib/x86_64-linux-gnu/libnvidia-ml.so.560.28.03 /lib/x86_64-linux-gnu/libnvidia-ml.so
ln -sf /lib/x86_64-linux-gnu/libnvidia-ml.so.560.28.03 /lib/x86_64-linux-gnu/libnvidia-ml.so.1
ln -sf /lib/x86_64-linux-gnu/libnvcuvid.so.560.28.03 /lib/x86_64-linux-gnu/libnvcuvid.so
ln -sf /lib/x86_64-linux-gnu/libnvcuvid.so.560.28.03 /lib/x86_64-linux-gnu/libnvcuvid.so.1
ln -sf /lib/x86_64-linux-gnu/libcuda.so.560.28.03 /lib/x86_64-linux-gnu/libcuda.so
ln -sf /lib/x86_64-linux-gnu/libcuda.so.560.28.03 /lib/x86_64-linux-gnu/libcuda.so.1
ln -sf /lib/x86_64-linux-gnu/libnvoptix.so.560.28.03 /lib/x86_64-linux-gnu/libnvoptix.so.1
ln -sf /lib/x86_64-linux-gnu/libnvidia-opencl.so.560.28.03 /lib/x86_64-linux-gnu/libnvidia-opencl.so.1
ln -sf /lib/x86_64-linux-gnu/libnvidia-allocator.so.560.28.03 /lib/x86_64-linux-gnu/libnvidia-allocator.so
ln -sf /lib/x86_64-linux-gnu/libnvidia-allocator.so.560.28.03 /lib/x86_64-linux-gnu/libnvidia-allocator.so.1
ln -sf /lib/x86_64-linux-gnu/libnvidia-egl-wayland.so.1.1.13 /lib/x86_64-linux-gnu/libnvidia-egl-wayland.so.1
ln -sf /lib/x86_64-linux-gnu/libOpenCL.so.1.0.0 /lib/x86_64-linux-gnu/libOpenCL.so.1
ln -sf /lib/x86_64-linux-gnu/libnvidia-ptxjitcompiler.so.560.28.03 /lib/x86_64-linux-gnu/libnvidia-ptxjitcompiler.so.1
ln -sf /lib/x86_64-linux-gnu/libnvidia-ngx.so.560.28.03 /lib/x86_64-linux-gnu/libnvidia-ngx.so.1
ln -sf /lib/x86_64-linux-gnu/libGLX_nvidia.so.560.28.03 /lib/x86_64-linux-gnu/libGLX_nvidia.so.0
ln -sf /lib/x86_64-linux-gnu/libnvidia-opticalflow.so.560.28.03 /lib/x86_64-linux-gnu/libnvidia-opticalflow.so
ln -sf /lib/x86_64-linux-gnu/libnvidia-opticalflow.so.560.28.03 /lib/x86_64-linux-gnu/libnvidia-opticalflow.so.1
ln -sf /lib/x86_64-linux-gnu/libnvidia-egl-gbm.so.1.1.1 /lib/x86_64-linux-gnu/libnvidia-egl-gbm.so.1
ln -sf /lib/x86_64-linux-gnu/libnvidia-encode.so.560.28.03 /lib/x86_64-linux-gnu/libnvidia-encode.so
ln -sf /lib/x86_64-linux-gnu/libnvidia-encode.so.560.28.03 /lib/x86_64-linux-gnu/libnvidia-encode.so.1
ln -sf /lib/x86_64-linux-gnu/libnvidia-nvvm.so.560.28.03 /lib/x86_64-linux-gnu/libnvidia-nvvm.so
ln -sf /lib/x86_64-linux-gnu/libnvidia-nvvm.so.560.28.03 /lib/x86_64-linux-gnu/libnvidia-nvvm.so.4
ln -sf /lib/x86_64-linux-gnu/libnvidia-vksc-core.so.560.28.03 /lib/x86_64-linux-gnu/libnvidia-vksc-core.so.12.重启docker
3.给驱动库文件赋予访问权限
sudo chmod -R a+r /usr/lib/firmware/nvidia
现在驱动环境已配置完毕。
4.配置emby容器compose
version: "3.x"
services:
emby:
image: amilys/embyserver:4.8.9.0
container_name: embyserver
runtime: nvidia # Expose NVIDIA GPUs
network_mode: host # Enable DLNA and Wake-on-Lan
environment:
# - UID=1000 # The UID to run emby as (default: 2)
# - GID=100 # The GID to run emby as (default 2)
# - GIDLIST=100 # A comma-separated list of additional GIDs to run emby as (default: 2)
- UID=1000 # 设置权限
- GID=100 # 设置权限
- GIDLIST=100 # 设置权限
- NVIDIA_VISIBLE_DEVICES=all # 映射NVIDIA显卡
- NVIDIA_DRIVER_CAPABILITIES=all # 映射NVIDIA显卡
volumes:
- ./config:/config # Configuration directory
- /vol2/1000/video:/mnt/video # Media directory
ports:
- 8096:8096 # HTTP port
- 8920:8920 # HTTPS port
devices:
- /dev/dri:/dev/dri # VAAPI/NVDEC/NVENC render nodes
restart: on-failure注意:xinjiawei破解的emby镜像能正确识别显卡,但是无法正确调用转码,目前只能使用这个版本。跟这个无关。
参考的飞牛社区文档:https://club.fnnas.com/forum.php?mod=viewthread&tid=14106
许可协议:
CC BY 4.0