windows11使用docker | Jellyfin开启NVIDIA硬件加速
耗子偷了我的油灯
2025年01月17日 14:27

英伟达¶ Nvidia 硬件加速用户需要在其主机上安装 Nvidia 提供的容器运行时,说明可在此处找到:https://github.com/NVIDIA/nvidia-container-toolkit 我们会自动添加必要的环境变量,以利用主机上 GPU 上可用的所有功能。在主机上安装 nvidia-container-toolkit 后,您需要使用 nvidia 容器运行时重新/创建 docker 容器--runtime=nvidia并添加环境变量-e NVIDIA_VISIBLE_DEVICES=all(也可以设置为特定 gpu 的 UUID,可通过运行发现nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv)。NVIDIA 会自动将主机上的 GPU 和驱动程序安装到容器中。已经安装好了nvidia-container-toolkit . Jellyfin开启硬件加速,接下来的步骤

要在 Jellyfin 中开启硬件加速并使用 NVIDIA GPU,请按照以下步骤操作:

1. 确保已安装 nvidia-container-toolkit

你已经确认安装了 nvidia-container-toolkit,这是使用 NVIDIA GPU 进行硬件加速的前提。

系统要求

  1. Windows 10 或 Windows Server 2019/2022:64 位版本。

  2. WSL 2(Windows Subsystem for Linux 2):NVIDIA Container Toolkit 主要在 Linux 环境中运行,因此需要通过 WSL 2 使用。

  3. NVIDIA GPU 驱动:确保已安装支持 CUDA 的 NVIDIA 显卡驱动。

  4. Docker Desktop:需安装并配置 Docker Desktop,并启用 WSL 2 后端。

安装步骤

注意: 需要翻墙连接外网

  1. 启用 WSL 2

  • 打开 PowerShell 作为管理员,运行以下命令:

  • powershell

    • wsl --install

  • 如果已安装 WSL 1,升级到 WSL 2:

  • powershell

    • wsl --set-version <发行版名称> 2

  • 安装 Docker Desktop

    • 下载并安装 Docker Desktop。

    • 安装时选择使用 WSL 2 后端。

  1. 安装 NVIDIA 驱动

    • 从 NVIDIA 官网 下载并安装适用于 Windows 的最新 GPU 驱动。

  1. 安装 NVIDIA Container Toolkit

  • 在 WSL 2 的 Linux 发行版中(如 Ubuntu),运行以下命令:

  • distribution=$(. /etc/os-release;echo $ID$VERSION_ID)

  • curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -

  • curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

  • sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit

    • sudo systemctl restart docker

  • 验证安装

  • 在 WSL 2 中运行以下命令,确认 GPU 可用:

    • docker run --gpus all nvidia/cuda:11.0-base nvidia-smi

注意事项

  • NVIDIA Container Toolkit 主要在 Linux 环境中运行,Windows 上需通过 WSL 2 使用。

  • 确保 WSL 2 和 Docker Desktop 配置正确。

2. 使用 NVIDIA 容器运行时启动 Jellyfin 容器

在启动 Jellyfin 容器时,需要使用 --runtime=nvidia 参数,并设置 NVIDIA_VISIBLE_DEVICES 环境变量。

bash

复制

docker run -d \

--name jellyfin \

--runtime=nvidia \

-e NVIDIA_VISIBLE_DEVICES=all \

-v /path/to/config:/config \

-v /path/to/media:/media \

-p 8096:8096 \

jellyfin/jellyfin:latest

  • --runtime=nvidia:指定使用 NVIDIA 容器运行时。

  • -e NVIDIA_VISIBLE_DEVICES=all:使容器可以访问主机上的所有 GPU。如果你只想使用特定的 GPU,可以将其设置为 GPU 的 UUID。

  • -v /path/to/config:/config:将 Jellyfin 的配置文件目录挂载到容器中。

  • -v /path/to/media:/media:将媒体文件目录挂载到容器中。

  • -p 8096:8096:将容器的 8096 端口映射到主机的 8096 端口。

3. 进入 Jellyfin 管理界面

启动容器后,打开浏览器并访问 http://localhost:8096,进入 Jellyfin 的管理界面。

4. 配置硬件加速

  1. 登录 Jellyfin 管理界面。

  2. 进入 Dashboard(仪表盘)。

  3. 选择 Playback(播放)选项卡。

  4. Hardware Acceleration(硬件加速)部分,选择 NVIDIA NVENC 作为硬件加速选项。

  5. 保存设置。

5. 验证硬件加速是否生效

  1. 播放一个视频文件。

  2. 进入 Dashboard > Playback > Transcoding(转码)选项卡,查看是否使用了 GPU 进行转码。

6. 检查 GPU 使用情况

你可以通过 nvidia-smi 命令查看 GPU 的使用情况,确认 Jellyfin 是否正在使用 GPU 进行硬件加速。

bash

复制

nvidia-smi

如果一切正常,你应该会看到 Jellyfin 进程正在使用 GPU。

已经成功使用英伟达硬件加速

feelapple@DESKTOP-J30S84J:/mnt/c/Users/Administrator$ nvidia-smi

Fri Jan 17 14:14:49 2025

+-----------------------------------------------------------------------------------------+

| NVIDIA-SMI 565.57.02 Driver Version: 566.03 CUDA Version: 12.7 |

|-----------------------------------------+------------------------+----------------------+

| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |

| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |

| | | MIG M. |

|=========================================+========================+======================|

| 0 NVIDIA GeForce RTX 3080 On | 00000000:07:00.0 On | N/A |

| 37% 25C P2 158W / 350W | 2705MiB / 12288MiB | 17% Default |

| | | N/A |

+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+

| Processes: |

| GPU GI CI PID Type Process name GPU Memory |

| ID ID Usage |

|=========================================================================================|

| 0 N/A N/A 28 G /Xwayland N/A |

| 0 N/A N/A 28 G /Xwayland N/A |

| 0 N/A N/A 909 G /ffmpeg N/A |

+-----------------------------------------------------------------------------------------+