安装
sh
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
问题1
sh
sudo apt-get install -y nvidia-docker2
sudo systemctl restart docker
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成
E: 无法定位软件包 nvidia-docker2
解决
sh
curl -s -L https://nvidia.github.io/nvidia-docker/ubuntu22.04/nvidia-docker.list | \
sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
如果配置了docker文件, 安装过程先保留自己的配置再修改
配置文件 '/etc/docker/daemon.json'
==> 系统中的这个文件或者是由您创建的,或者是由脚本建立的。
==> 软件包维护者所提供的软件包中也包含了该文件。
您现在希望如何处理呢? 您有以下几个选择:
Y 或 I :安装软件包维护者所提供的版本
N 或 O :保留您原来安装的版本
D :显示两者的区别
Z :把当前进程切换到后台,然后查看现在的具体情况
默认的处理方法是保留您当前使用的版本。
*** daemon.json (Y/I/N/O/D/Z) [默认选项=N] ? d
--- /etc/docker/daemon.json 2026-03-03 14:07:30.465355011 +0800
+++ /etc/docker/daemon.json.dpkg-new 2023-03-31 21:10:49.000000000 +0800
@@ -1,3 +1,8 @@
{
- "registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
+ "runtimes": {
+ "nvidia": {
+ "path": "nvidia-container-runtime",
+ "runtimeArgs": []
+ }
+ }
}
开启 X11 访问权限
宿主机执行:
sh
xhost +local:docker
输出:
non-network local connections being added to access control list
说明 Docker 容器可以访问 X Server。
测试 GUI 环境
sh
安装工具:
sudo apt install -y x11-apps
sudo apt install -y mesa-utils
测试 X11
xeyes
如果出现 👀 窗口说明 X11 正常。

GPU 测试
glxgears
如果出现旋转齿轮窗口说明 GPU 渲染正常。

Docker GUI 测试
sh
运行:
docker run -it --rm \
--network host \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
ubuntu:22.04
容器内安装 GUI 工具:
apt update
apt install -y x11-apps
xeyes
如果窗口弹出说明 Docker GUI 正常。