Docker Desktop玩转Docker Compose:从零到服务运行的全流程指南
本文详细拆解在Docker Desktop中执行Docker Compose文件的完整旅程。从Docker Desktop安装、Compose文件准备,到服务的启动、验证、停止与删除,每一步都有清晰指引。助您轻松构建和管理多容器应用,并附带常见问题解决方案,让您的开发工作更顺畅。
支持通配符SSL证书、多域名证书、IP证书。适配ACME接口, 支持Zerossl、Let's Encrypt和Google等渠道。登录已有账号
2026-06-04 08:19:11 飞牛NAS Jellyfin Docker 硬件解码 NVIDIA
一开始想着飞牛NAS的App商店应该能直接搞定Jellyfin,结果一看硬解还得自己折腾。机器上插了块1050Ti,不用起来总觉得浪费,就开搞吧。
驱动安装这块,飞牛底层是Debian,直接去NVIDIA官网下载对应驱动。我装的版本是535.154.02,用wget拉下来,chmod加权限,然后sudo运行安装。
装完后跑 nvidia-smi 看看显卡认出来没,温度和显存占用都有就算成功了。
docker镜像加速建议顺便配一下,飞牛的Docker设置里可以加镜像源,我用的是轩辕的 https://docker.xuanyuan.me/ ,拖镜像会快不少。
接下来才是坑开始的地方。要让Docker容器能用上显卡,光有宿主驱动不够,得装 nvidia-container-toolkit。添加APT源的时候注意改一下gpg签名方式,不然可能会报错。命令如下:
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://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
装好之后要配置Docker运行时,执行 sudo nvidia-ctk runtime configure --runtime=docker ,然后重启Docker服务。
这一步经常有人忘记重启,导致容器启动时报找不到运行时。
接下来拉Jellyfin镜像,我用的是linuxserver/jellyfin,稳定。启动容器时关键参数:--runtime=nvidia,-e NVIDIA_VISIBLE_DEVICES=all ,还有 --privileged=true 提权。端口映射和目录挂载按自己情况填,配置目录和媒体目录别忘了。
docker run -d \
--name=jellyfin \
--privileged=true \
--runtime=nvidia \
-e NVIDIA_VISIBLE_DEVICES=all \
-p 8096:8096 \
-v /path/to/config:/config \
-v /path/to/media:/media \
ghcr.io/linuxserver/jellyfin
容器跑起来后,进Jellyfin管理界面 http://NAS_IP:8096 ,完成初始化。硬件加速设置在控制面板→播放→转码里,勾选启用硬件加速,编码器选NVIDIA NVENC。
H.264和H.265的编码参数可以按需调整,我一般默认。
到这一步还不一定就成功了。最好马上验证一下GPU是否真的被容器用起来了,执行 docker exec jellyfin nvidia-smi ,如果能看到类似下面的输出,说明硬解生效了:
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 535.154.02 Driver Version: 535.154.02 CUDA Version: 12.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 NVIDIA GeForce... Off | 00000000:01:00.0 On | N/A |
| 30% 45C P0 N/A / 75W | 1024MiB / 4096MiB | 20% Default |
+-----------------------------------------------------------------------------+
如果命令报错或者没有进程占用显存,那就要排查了。
常见问题里,驱动冲突是新手容易碰到的。如果之前装过其他版本驱动或者系统自带的开源驱动,可以先 purge 掉:sudo apt-get purge nvidia-* 然后重启。
容器无法访问GPU,多半是 nvidia-container-toolkit 没装好或者Docker没重启。检查一下 systemctl status nvidia-container-toolkit 的状态,确认容器启动命令里确实有 --runtime=nvidia 参数。
Jellyfin自己转码失败的话,看日志比较直接:docker logs jellyfin | grep -i "ffmpeg|nvidia" ,一般能定位到是权限问题还是编码器调用错误。
回过头来看,飞牛NAS上实现Docker版Jellyfin硬解,核心点就几个:宿主驱动、nvidia-container-toolkit、容器启动参数、Jellyfin内的硬解开关。
少一步都不行。
顺便说一句,如果有多张卡或者想给不同容器分配不同GPU,可以在环境变量 NVIDIA_VISIBLE_DEVICES 里指定GPU的UUID或者序号,不用全给。用 docker-compose 的话,在service下加 runtime: nvidia 就行,不用在docker run里写。
这一套流程跑下来,1080P转码拖动进度条基本秒开,CPU占用也下来了,那块1050Ti总算没闲着。
本文详细拆解在Docker Desktop中执行Docker Compose文件的完整旅程。从Docker Desktop安装、Compose文件准备,到服务的启动、验证、停止与删除,每一步都有清晰指引。助您轻松构建和管理多容器应用,并附带常见问题解决方案,让您的开发工作更顺畅。
本文将深入探讨Docker容器目录挂载的核心原理,详细阐述-v、--mount参数、Docker Compose及Dockerfile中VOLUME指令的多种实现方法。通过丰富的示例,指导读者如何在日志持久化、配置文件管理和数据存储等场景中高效应用,并提供权限、同步及故障排除的最佳实践策略。
面对Docker构建中常见的网络超时与镜像拉取失败?本文提供了一套系统化的解决策略,从基础网络诊断、国内镜像加速配置到代理设置与防火墙检查,覆盖DNS优化、daemon.json配置等关键技术点。掌握这些,90%的连接问题将迎刃而解,助你高效完成Docker构建。
本教程为Ubuntu用户提供通过Docker安装和部署PostgreSQL的完整保姆级指南。涵盖镜像拉取、容器配置、数据持久化到网络设置,并分享生产环境下的部署策略、最佳实践与常见问题解决方案。
在Docker的优雅舞台上,Caddy携手阿里云DNS,通过精妙的自动化编排,实现SSL证书的无缝申请与部署,为您的数字领地披上坚不可摧的安全铠甲。