Update nexus: fix conflicts and sync local changes
This commit is contained in:
@@ -1,62 +1,62 @@
|
||||
---
|
||||
title: "设备直通"
|
||||
type: concept
|
||||
tags: [docker, hardware, device, passthrough, jellyfin]
|
||||
date: 2026-04-14
|
||||
---
|
||||
|
||||
# 设备直通
|
||||
|
||||
在容器化环境中将宿主机物理设备(GPU、声卡、硬件编码器等)映射到容器内,使容器内应用可直接访问和使用该硬件。
|
||||
|
||||
## Core Mechanism
|
||||
Docker 容器默认运行在隔离的命名空间中,容器内无法直接访问宿主机的硬件设备。设备直通通过 `--device` 参数或 `devices` 配置项,将宿主机设备节点映射到容器内,使容器内进程可以像宿主机一样访问硬件。
|
||||
|
||||
## Docker 配置方式
|
||||
```yaml
|
||||
services:
|
||||
jellyfin:
|
||||
devices:
|
||||
- /dev/dri:/dev/dri # Intel GPU / VA-API
|
||||
- /dev/nvidia0:/dev/nvidia0 # NVIDIA GPU (需 nvidia-container-toolkit)
|
||||
- /dev/snd:/dev/snd:rw # 声卡设备
|
||||
```
|
||||
|
||||
## 常见使用场景
|
||||
| 场景 | 宿主机设备 | 容器用途 |
|
||||
|------|-----------|----------|
|
||||
| Intel QuickSync 转码 | /dev/dri/renderD* | Jellyfin / FFmpeg 硬件视频转码 |
|
||||
| NVIDIA 加速 | /dev/nvidia* | CUDA 计算、视频编码 |
|
||||
| 声卡直通 | /dev/snd/* | 音频播放/录制 |
|
||||
| 串口设备 | /dev/ttyUSB0 | 嵌入式设备调试 |
|
||||
| GPU 直通(VM) | PCI 设备 | 游戏 / AI 推理 |
|
||||
|
||||
## Jellyfin 中的设备直通
|
||||
```yaml
|
||||
devices:
|
||||
- /dev/dri:/dev/dri
|
||||
```
|
||||
- `/dev/dri` 是 Linux DRM(Direct Rendering Manager)设备目录
|
||||
- 包含 renderD128/129 等节点,代表 GPU 渲染引擎
|
||||
- Intel CPU 集成 GPU 通过此接口提供 QuickSync 视频编码
|
||||
- VA-API 和 VDPAU 也依赖此接口
|
||||
|
||||
## 权限问题
|
||||
- 默认情况下,容器以非 root 用户运行时可能无法访问 `/dev/dri`
|
||||
- 解决方案:
|
||||
1. 将设备映射为可读(`:ro`)
|
||||
2. 在 `docker run` 时加上 `--group-add video`
|
||||
3. 群晖 NAS 使用 `user: "1026:100"` 映射到有权限的用户
|
||||
|
||||
## Related Concepts
|
||||
- [[硬件转码]] — 设备直通是硬件转码在 Docker 环境下的实现前提
|
||||
- [[Docker 用户权限映射]] — 解决容器用户访问宿主机设备权限问题
|
||||
- [[nvidia-container-toolkit]] — NVIDIA GPU 在 Docker 中的特殊设备直通方案
|
||||
|
||||
## Connections
|
||||
- [[Jellyfin]] ← 受益应用 ← [[设备直通]] — QuickSync 硬件转码
|
||||
- [[群晖 NAS]] ← 宿主机 ← [[设备直通]] — NAS Intel CPU GPU 访问
|
||||
- [[Intel QuickSync]] ← 依赖 ← [[设备直通]] — GPU 硬件加速通道
|
||||
|
||||
## Sources
|
||||
- [[用docker安装jellyfin]] — /dev/dri 设备直通的 Docker Compose 配置示例
|
||||
---
|
||||
title: "设备直通"
|
||||
type: concept
|
||||
tags: [docker, hardware, device, passthrough, jellyfin]
|
||||
date: 2026-04-14
|
||||
---
|
||||
|
||||
# 设备直通
|
||||
|
||||
在容器化环境中将宿主机物理设备(GPU、声卡、硬件编码器等)映射到容器内,使容器内应用可直接访问和使用该硬件。
|
||||
|
||||
## Core Mechanism
|
||||
Docker 容器默认运行在隔离的命名空间中,容器内无法直接访问宿主机的硬件设备。设备直通通过 `--device` 参数或 `devices` 配置项,将宿主机设备节点映射到容器内,使容器内进程可以像宿主机一样访问硬件。
|
||||
|
||||
## Docker 配置方式
|
||||
```yaml
|
||||
services:
|
||||
jellyfin:
|
||||
devices:
|
||||
- /dev/dri:/dev/dri # Intel GPU / VA-API
|
||||
- /dev/nvidia0:/dev/nvidia0 # NVIDIA GPU (需 nvidia-container-toolkit)
|
||||
- /dev/snd:/dev/snd:rw # 声卡设备
|
||||
```
|
||||
|
||||
## 常见使用场景
|
||||
| 场景 | 宿主机设备 | 容器用途 |
|
||||
|------|-----------|----------|
|
||||
| Intel QuickSync 转码 | /dev/dri/renderD* | Jellyfin / FFmpeg 硬件视频转码 |
|
||||
| NVIDIA 加速 | /dev/nvidia* | CUDA 计算、视频编码 |
|
||||
| 声卡直通 | /dev/snd/* | 音频播放/录制 |
|
||||
| 串口设备 | /dev/ttyUSB0 | 嵌入式设备调试 |
|
||||
| GPU 直通(VM) | PCI 设备 | 游戏 / AI 推理 |
|
||||
|
||||
## Jellyfin 中的设备直通
|
||||
```yaml
|
||||
devices:
|
||||
- /dev/dri:/dev/dri
|
||||
```
|
||||
- `/dev/dri` 是 Linux DRM(Direct Rendering Manager)设备目录
|
||||
- 包含 renderD128/129 等节点,代表 GPU 渲染引擎
|
||||
- Intel CPU 集成 GPU 通过此接口提供 QuickSync 视频编码
|
||||
- VA-API 和 VDPAU 也依赖此接口
|
||||
|
||||
## 权限问题
|
||||
- 默认情况下,容器以非 root 用户运行时可能无法访问 `/dev/dri`
|
||||
- 解决方案:
|
||||
1. 将设备映射为可读(`:ro`)
|
||||
2. 在 `docker run` 时加上 `--group-add video`
|
||||
3. 群晖 NAS 使用 `user: "1026:100"` 映射到有权限的用户
|
||||
|
||||
## Related Concepts
|
||||
- [[硬件转码]] — 设备直通是硬件转码在 Docker 环境下的实现前提
|
||||
- [[Docker 用户权限映射]] — 解决容器用户访问宿主机设备权限问题
|
||||
- [[nvidia-container-toolkit]] — NVIDIA GPU 在 Docker 中的特殊设备直通方案
|
||||
|
||||
## Connections
|
||||
- [[Jellyfin]] ← 受益应用 ← [[设备直通]] — QuickSync 硬件转码
|
||||
- [[群晖 NAS]] ← 宿主机 ← [[设备直通]] — NAS Intel CPU GPU 访问
|
||||
- [[Intel QuickSync]] ← 依赖 ← [[设备直通]] — GPU 硬件加速通道
|
||||
|
||||
## Sources
|
||||
- [[用docker安装jellyfin]] — /dev/dri 设备直通的 Docker Compose 配置示例
|
||||
|
||||
Reference in New Issue
Block a user