Skip to main content

在 EC2 上设置带 GPU 的 Docker

遵循以下步骤,以在 EC2 上的 Docker 容器中渲染视频。 这些步骤是有主观看法的,但指定了一个有效的参考。

警告:偏离说明,比如:

  • 选择不同的 AMI
  • 选择不同的 Docker 基础
  • 选择 EC2 之外的其他内容
  • 选择不同的主机

可能导致 GPU 不起作用。在这种情况下,很难进行调试。 我们建议首先按照这些说明操作,并在建立起可工作的设置后再进行更改。

在 EC2 上设置带 GPU 的 Docker

按照EC2 上的 GPU说明操作。 您可以跳过安装 Chrome、Node.js 和克隆存储库以渲染视频。


安装 NVIDIA 容器工具包:



添加密钥环
bash
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
添加密钥环
bash
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
安装工具包
bash
sudo apt-get install -y nvidia-container-toolkit
安装工具包
bash
sudo apt-get install -y nvidia-container-toolkit

安装 Docker:


添加 Docker 的官方 GPG 密钥
bash
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
添加 Docker 的官方 GPG 密钥
bash
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
添加密钥环
bash
echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
添加密钥环
bash
echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
安装 Docker
bash
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
安装 Docker
bash
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

配置Docker以使用NVIDIA运行时


配置NVIDIA容器运行时
bash
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
配置NVIDIA容器运行时
bash
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

创建两个文件,Dockerfileentrypoint.sh 。例如,您可以使用 nano ./file-to-create 命令创建它们。 使用 Ctrl X 保存并退出。


Dockerfile
bash
FROM node:20-bookworm
RUN apt-get update
RUN apt-get install -y curl gnupg git chromium
RUN curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
RUN echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_18.x nodistro main" > /etc/apt/sources.list.d/nodesource.list
RUN apt-get clean
RUN rm -rf /var/lib/apt/lists/*
# Clone the repo
RUN git clone https://github.com/remotion-dev/gpu-scene.git
WORKDIR /gpu-scene
RUN npm install
# Copy the entrypoint script into the image
COPY entrypoint.sh .
CMD ["sh", "./entrypoint.sh"]
Dockerfile
bash
FROM node:20-bookworm
RUN apt-get update
RUN apt-get install -y curl gnupg git chromium
RUN curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
RUN echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_18.x nodistro main" > /etc/apt/sources.list.d/nodesource.list
RUN apt-get clean
RUN rm -rf /var/lib/apt/lists/*
# Clone the repo
RUN git clone https://github.com/remotion-dev/gpu-scene.git
WORKDIR /gpu-scene
RUN npm install
# Copy the entrypoint script into the image
COPY entrypoint.sh .
CMD ["sh", "./entrypoint.sh"]
entrypoint.sh
bash
#!/bin/bash
npx remotion render --gl=angle-egl Scene out/video.mp4
entrypoint.sh
bash
#!/bin/bash
npx remotion render --gl=angle-egl Scene out/video.mp4

构建容器并运行示例渲染:


bash
sudo docker build . -t remotion-docker-gpu
sudo docker run --gpus all --runtime=nvidia -e "NVIDIA_DRIVER_CAPABILITIES=all" remotion-docker-gpu
bash
sudo docker build . -t remotion-docker-gpu
sudo docker run --gpus all --runtime=nvidia -e "NVIDIA_DRIVER_CAPABILITIES=all" remotion-docker-gpu

调试

使用npx remotion gpu 命令获取 chrome://gpu 的输出,以验证 GPU 是否正常工作。

参见