一个人的小站

Fly

Docker安装Emby时使用独立显卡

37
2024-12-15

前言:在安装NVIDIA Container Toolkit工具包前需要先安装好显卡驱动。若有疑问请查看官方文档

一、安装NVIDIA Container Toolkit工具包

使用 Apt 安装

1. 配置生产存储库:

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

2. (可选)将存储库配置为使用实验性软件包:

sed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-container-toolkit.list

3. 安装 NVIDIA Container Toolkit 软件包:

# 更新源
sudo apt-get update
# 安装工具包
sudo apt-get install -y nvidia-container-toolkit

使用 Yum 或 Dnf 安装

1. 配置生产存储库:

curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | \
  sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo

2. (可选)将存储库配置为使用实验性软件包:

sudo yum-config-manager --enable nvidia-container-toolkit-experimental

3. 安装 NVIDIA Container Toolkit 软件包:

sudo apt-get install -y nvidia-container-toolkit

使用 Zypper 安装

1. 配置生产存储库:

sudo zypper ar https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo

2. (可选)将存储库配置为使用实验性软件包:

sudo zypper modifyrepo --enable nvidia-container-toolkit-experimental

3. 安装 NVIDIA Container Toolkit 软件包:

sudo zypper --gpg-auto-import-keys install -y nvidia-container-toolkit

二、配置NVIDIA Container Toolkit

您安装了受支持的容器引擎(Docker、Containerd、CRI-O、Podman)

您安装了 NVIDIA Container Toolkit

1. 配置 Docker

1.1 使用以下命令配置容器运行时:nvidia-ctk

sudo nvidia-ctk runtime configure --runtime=docker

该命令将修改主机上的文件。 该文件已更新,以便 Docker 可以使用 NVIDIA Container Runtime。nvidia-ctk/etc/docker/daemon.json

1.2 重新启动 Docker 守护程序:

sudo systemctl restart docker

2. 无根模式

要为在无根模式下运行的 Docker 配置容器运行时, 请执行以下步骤:

2.1 使用以下命令配置容器运行时:nvidia-ctk

nvidia-ctk runtime configure --runtime=docker --config=$HOME/.config/docker/daemon.json

2.2 重启无根 Docker 守护程序:

systemctl --user restart docker

2.3 使用以下命令进行配置:/etc/nvidia-container-runtime/config.toml sudo nvidia-ctk

sudo nvidia-ctk config --set nvidia-container-cli.no-cgroups --in-place

3. 配置 containerd(适用于 Kubernetes)

3.1 使用以下命令配置容器运行时:nvidia-ctk

sudo nvidia-ctk runtime configure --runtime=containerd

该命令将修改主机上的文件。 该文件将更新,以便 containerd 可以使用 NVIDIA Container Runtime。nvidia-ctk/etc/containerd/config.toml

3.2 重新启动 containerd:

sudo systemctl restart containerd

4. 配置 containerd(用于 nerdctl)

无需额外配置。 你可以只运行 ,有 root 或不有 root。 您无需为 Kubernetes 运行上述命令。nerdctl run --gpus=allnvidia-ctk

另请参阅 nerdctl 文档

5. 配置 CRI-O

5.1 使用以下命令配置容器运行时:nvidia-ctk

sudo nvidia-ctk runtime configure --runtime=crio

该命令将修改主机上的文件。 该文件已更新,以便 CRI-O 可以使用 NVIDIA Container Runtime。nvidia-ctk/etc/crio/crio.conf

5.2 重新启动 CRI-O 守护程序:

sudo systemctl restart crio

三、验证是否成功

1. 本机使用nvidia-smi命令查看显卡驱动信息

# 查看显卡驱动
nvidia-smi

2. 确认CUDA驱动版本后,从 DockerHub 下载对应版本的镜像

3. 查看docker容器是否能正确驱动显卡(需自行替换景象版本)

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

四、安装Emby

1. Docker Run安装

docker run -d \
  --name emby \
  --runtime=nvidia \
  --gpus all \
  -v /path/to/your/emby/config:/config \
  -v /path/to/your/media:/mnt/media \
  -p 8096:8096 \
  emby/embyserver

2. docker-composer安装

version: '3.8'

services:
  emby:
    image: emby/embyserver:latest # 使用适当的 Emby 镜像
    container_name: emby
    runtime: nvidia # 使用 NVIDIA 运行时
    environment:
      - NVIDIA_VISIBLE_DEVICES=all  # 选择所有可用的 GPU
    volumes:
      - /path/to/your/emby/config:/config  # Emby 配置文件挂载
      - /path/to/your/media:/mnt/media    # 媒体文件挂载
    ports:
      - "8096:8096"  # 映射端口
    restart: unless-stopped  # 容器崩溃时自动重启
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all  # 或者选择特定数量的 GPU,如 0
              capabilities: [gpu]

  • 0