Docker新手在树莓派部署Jellyfin容器启动失败求助
解决树莓派上Jellyfin容器Exited(132)的问题
核心问题分析
容器退出码132对应SIGILL(非法指令),结合树莓派的ARM架构,最可能的原因是拉取的Jellyfin镜像与树莓派架构不匹配(默认docker pull可能拉取了x86_64架构的镜像,无法在ARM设备上运行)。
分步解决与调试
1. 确认并更换匹配架构的镜像
- 先检查当前镜像的架构:
如果输出是docker inspect jellyfin/jellyfin | grep Architecture"Architecture": "amd64",说明镜像不兼容。 - 根据树莓派的架构拉取对应镜像:
- 64位树莓派(Pi 3B+/4/5等):
docker pull jellyfin/jellyfin:latest-arm64v8 - 32位树莓派(Pi 2/3等):
docker pull jellyfin/jellyfin:latest-arm32v7
- 64位树莓派(Pi 3B+/4/5等):
2. 修复用户权限上下文问题
容器内whoami找不到用户名、touch提示无法设置时间,是因为容器的/etc/passwd没有你指定的UID/GID对应的用户条目。可以挂载宿主机的/etc/passwd文件解决:
修改启动命令,添加只读挂载:
docker run -it -u {uid}:{gid} --name jellyfin --net=host \ --volume {HOMEDIR}/jellyfin-config:/config \ --volume {HOMEDIR}/jellyfin-cache:/cache \ --mount type=bind,source={HOMEDIR}/Music,target=/media \ --mount type=bind,source=/etc/passwd,target=/etc/passwd,ro \ jellyfin/jellyfin:latest-arm64v8 # 替换为对应架构的标签
3. 简化命令逐步排查
如果还是有问题,先去掉多余参数,用最基础的命令测试镜像是否能正常运行:
docker run --rm -it jellyfin/jellyfin:latest-arm64v8
如果能启动并看到日志输出,再逐步添加挂载、用户、网络参数,定位具体哪个参数导致问题。
4. 进阶调试方法
- 进入容器直接调试:
在容器内执行以下操作:docker run --rm -it --entrypoint=/bin/bash jellyfin/jellyfin:latest-arm64v8- 找到Jellyfin的执行路径:
find / -name jellyfin -type f - 直接执行二进制文件,观察错误:
/usr/lib/jellyfin/bin/jellyfin(替换为实际路径) - 检查依赖库是否缺失:
ldd /usr/lib/jellyfin/bin/jellyfin
- 找到Jellyfin的执行路径:
- 查看宿主机内核日志:
宿主机上执行dmesg | grep jellyfin,可能会看到内核层面的非法指令记录,进一步确认架构问题。
内容的提问来源于stack exchange,提问作者ShankarG
相关产品推荐
相关产品推荐

