Emby 中文文档 下载 App

Emby Docker 容器部署 — 一条命令跑起来,灵活又干净

Docker 方式的优势

在所有部署方式中,Docker 是最灵活的一种:

前置条件

宿主机上安装好 Docker Engine(Linux 原生、群晖 Container Manager、威联通 Container Station、TrueNAS Scale 等都自带或一键装好)。在宿主机终端执行 docker --version 能看到版本号就说明装好了。

x64 架构服务器(最常见)

一条命令搞定:

docker run -d \
  --name emby \
  --restart unless-stopped \
  --net=host \
  -e UID=1000 \
  -e GID=1000 \
  -e GIDLIST=1000 \
  -e TZ=Asia/Shanghai \
  -v /home/user/emby/config:/config \
  -v /home/user/Movies:/data/movies \
  -v /home/user/TVShows:/data/tvshows \
  -v /home/user/Music:/data/music \
  -v /home/user/Photos:/data/photos \
  emby/embyserver:latest

逐参数解释:

参数说明为什么要这样
-d后台运行容器Emby Server 需要常驻
--name emby给容器起名方便后续 docker stop/start emby
--restart unless-stopped宿主机重启后自动拉起确保 24x7 运行
--net=host用宿主机网络硬件转码必需。如果不用 --net=host,需要手动映射端口 -p 8096:8096 -p 8920:8920
-e UID/GIDEmby 进程在容器内以哪个宿主身份运行确保能读到挂载的媒体文件,避免权限问题
-e TZ时区影响 Guide Data 和日志时间
-v 左边:右边卷挂载左边是宿主机路径,右边是容器内路径

添加硬件转码设备

如果宿主机有 Intel 核显,需要把 /dev/dri/ 透传进容器:

docker run -d \
  --name emby \
  --restart unless-stopped \
  --net=host \
  --device=/dev/dri/renderD128 \
  --device=/dev/dri/card0 \
  -e UID=1000 \
  -e GID=1000 \
  -e TZ=Asia/Shanghai \
  -v /home/user/emby/config:/config \
  -v /home/user/Movies:/data/movies \
  emby/embyserver:latest

NVIDIA 独显需要加 --runtime=nvidia(需要先装 nvidia-docker)。AMD 显卡用同样的 /dev/dri/ 透传方式。

ARM 架构(树莓派、ARM NAS)

用 ARM 专用镜像:

# ARM64(树莓派 4、群晖 DS923+ 等)
docker run -d \
  --name emby \
  --restart unless-stopped \
  --net=host \
  -e UID=1000 \
  -e GID=1000 \
  -e TZ=Asia/Shanghai \
  -v /home/user/emby/config:/config \
  -v /home/user/Movies:/data/movies \
  emby/embyserver_arm64v8:latest

# ARMv7(老款树莓派 3、ARMv7 NAS)
# 把镜像名换成 emby/embyserver_arm32v7:latest

docker-compose 方式

更推荐把上面的配置写成 docker-compose.yml,方便维护和升级:

services:
  emby:
    image: emby/embyserver:latest
    container_name: emby
    restart: unless-stopped
    network_mode: host
    devices:
      - /dev/dri/renderD128:/dev/dri/renderD128
      - /dev/dri/card0:/dev/dri/card0
    environment:
      - UID=1000
      - GID=1000
      - TZ=Asia/Shanghai
    volumes:
      - /home/user/emby/config:/config
      - /home/user/Movies:/data/movies
      - /home/user/TVShows:/data/tvshows
      - /home/user/Music:/data/music

启动:docker compose up -d停止:docker compose down升级:docker compose pull && docker compose up -d

容器管理常用命令

# 查看容器状态
docker ps | grep emby

# 查看实时日志(排查问题时用)
docker logs -f emby

# 停止/启动/重启
docker stop emby && docker start emby
docker restart emby

# 升级到最新版
docker pull emby/embyserver:latest
docker stop emby && docker rm emby
docker run -d --name emby ...  # 同上的完整命令

# 备份 Emby 配置(在容器跑着的时候也能拷)
cp -r /home/user/emby/config ./emby-backup-$(date +%Y%m%d)

常见问题

容器启动了但浏览器打不开

检查 docker ps 看容器是不是在运行(STATUS 显示 Up)。如果用了 --net=host,直接访问宿主机 IP:8096。如果没加 --net=host,检查端口映射是否正确。

权限错误,Emby 扫不到媒体文件

PUID/GID 填错了。用 id 用户名 查一下宿主机上实际能读媒体目录的那个用户的 uid 和 gid,改了之后重建容器。

硬件转码用不了

确认加了 --device=/dev/dri/... 透传;确认宿主机核显驱动装好了(Intel 核显需要 intel-media-va-driver);进入 Emby Server Dashboard → Transcoding 页面,硬件解码器选 Quick Sync 或 Auto。

升级后配置丢失

肯定是卷挂载路径写错了,升级时用到了新的空 config 目录。检查 docker run 或 docker-compose.yml 里 -v 左边的宿主机路径是不是你之前用的那个。升级前养成习惯先备份 config 目录。