在 Ubuntu 22.04 上安装 nvidia-docker2 可以通过一系列步骤完成。nvidia-docker2 是一个用于运行 Docker 容器的工具,它使容器能够访问宿主机的 NVIDIA GPU。以下是安装过程:

1. 安装 Docker

首先,确保已经安装了 Docker。如果没有安装 Docker,可以通过以下命令安装:

sudo apt update
sudo apt install docker.io

2. 安装 NVIDIA 驱动

在 Ubuntu 22.04 上安装 nvidia-smi 需要安装 NVIDIA 驱动程序,因为 nvidia-smi 是 NVIDIA 驱动包的一部分。你可以按照以下步骤安装它:

1. 添加 NVIDIA 驱动程序仓库

在 Ubuntu 中默认没有 NVIDIA 的最新驱动程序,建议添加 NVIDIA 官方的 PPA 仓库。

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update

2. 安装 NVIDIA 驱动程序

使用以下命令查看系统支持的 NVIDIA 驱动版本,并选择一个适合你系统的版本安装。

ubuntu-drivers devices

系统将列出可用的驱动程序,通常会推荐适合你的驱动版本。你可以根据推荐安装指定的驱动程序,例如:

sudo apt install nvidia-driver-535

注意:上面 nvidia-driver-535 是一个示例,你需要根据你系统的输出选择合适的驱动版本。

3. 重启系统

安装完驱动后,建议重启系统以确保 NVIDIA 驱动正确加载。

sudo reboot

4. 验证 nvidia-smi

重启后,可以使用以下命令验证 nvidia-smi 是否正确安装。

nvidia-smi

这应该会输出 NVIDIA GPU 的状态和驱动程序信息。

额外信息

如果你使用的是 Ubuntu 自带的 GUI 安装器,你也可以通过 “Additional Drivers” 工具选择并安装适合的 NVIDIA 驱动程序:

  • 打开 Software & Updates
  • 转到 Additional Drivers 标签
  • 选择 NVIDIA 驱动程序并应用。

安装成功后,同样可以通过终端运行 nvidia-smi 进行验证。

3. 添加 NVIDIA Docker 仓库

在安装 nvidia-docker2 之前,需要添加 NVIDIA Docker 的官方仓库。执行以下命令:

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-docker-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/nvidia-docker-archive-keyring.gpg] https://nvidia.github.io/nvidia-docker/$distribution nvidia-docker stable" | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

这些命令将自动检测你的发行版并添加相应的仓库。

4. 安装 nvidia-docker2

更新包索引并安装 nvidia-docker2

sudo apt update
sudo apt install nvidia-docker2

出现他,这是因为你之前自己造了一个daemon.json,选n或者y都行,然后复制下面的json覆盖他就行了,然后重启docker
Configuration file ‘/etc/docker/daemon.json’
What would you like to do about it ? Your options are:
Y or I : install the package maintainer’s version
N or O : keep your currently-installed version
D : show the differences between the versions
Z : start a shell to examine the situation
The default action is to keep your current version.
*** daemon.json (Y/I/N/O/D/Z) [default=N] ?

这段信息是系统在询问你如何处理 /etc/docker/daemon.json 文件的更新问题。你可能已经有一个自定义的配置文件,而新安装的软件包(比如 nvidia-docker2)也提供了一个新的配置文件版本。

具体选项解释如下:

  • Y 或 I: 安装软件包维护者提供的版本(会覆盖你当前的配置文件)。
  • N 或 O: 保留你当前安装的版本(不使用新的配置文件)。
  • D: 显示当前文件和新文件之间的差异。
  • Z: 启动一个 shell,让你可以手动检查、编辑文件,或者进行其他操作。

默认选项是 N,即保留你当前安装的版本,不覆盖。

如果你对当前的配置进行了修改,并且不想丢失这些修改,建议选择 N 来保留当前配置文件。如果你愿意使用维护者提供的新版本并重新配置 Docker,可以选择 Y 来覆盖现有的文件。

{
    "registry-mirrors": [
        "https://docker.m.daocloud.io",
        "https://dockerproxy.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://docker.nju.edu.cn"
    ],
    "default-runtime":"nvidia",
    "runtimes": {
        "nvidia": {
            "path": "nvidia-container-runtime",
            "runtimeArgs": []
        }
    }
}


5. 重启 Docker 服务

安装 nvidia-docker2 后,需要重启 Docker 服务:

sudo systemctl restart docker

3. 卸载nvidia-docker2

要卸载 nvidia-docker2,你可以按照以下步骤在 Ubuntu 22.04 上进行操作:

  1. 停止 Docker 服务
    首先,你可以停止 Docker 服务以确保所有相关容器都已停止。

    sudo systemctl stop docker
    
  2. 卸载 nvidia-docker2
    使用以下命令卸载 nvidia-docker2

    sudo apt-get purge -y nvidia-docker2
    
  3. 重新加载 Docker 配置
    由于 nvidia-docker2 可能对 Docker 配置文件(例如 /etc/docker/daemon.json)进行了修改,卸载后你可能需要重新加载 Docker 配置:

    sudo systemctl daemon-reload
    
  4. 重启 Docker 服务
    确保 Docker 服务重新启动,以便应用新的配置。

    sudo systemctl restart docker
    
  5. 检查卸载是否成功
    确认 nvidia-docker2 已经被成功卸载,你可以检查一下 Docker 的 daemon.json 文件和运行的容器:

    dpkg -l | grep nvidia-docker
    

    如果没有输出,表示 nvidia-docker2 已经卸载成功。

这套操作会卸载 nvidia-docker2 并且让 Docker 保持正常运行。如果你不再需要 Docker 或者 GPU 支持,你也可以选择进一步卸载 Docker 或 NVIDIA 驱动程序。


ubuntu22.04如何修改 Docker Root Dir到/data1下面

在 Ubuntu 22.04 上修改 Docker 的 Root Dir(即 Docker 的数据存储目录)到 /data1 目录,需要进行以下几个步骤:

1. 停止 Docker 服务

首先,确保 Docker 服务已停止,以避免在迁移数据时造成数据不一致。使用以下命令停止 Docker 服务:

sudo systemctl stop docker

2. 迁移 Docker 数据

接下来,需要将当前的 Docker 数据目录(通常是 /var/lib/docker)移动到新的位置(在这个例子中是 /data1)。首先确认 /data1 目录已存在并具有足够的空间。然后,使用以下命令移动数据:

sudo rsync -avzh /var/lib/docker/ /data1/docker

这将把所有现有的 Docker 数据复制到 /data1/docker

3. 更新 Docker 配置

修改 Docker 的配置文件,以指示 Docker 使用新的数据目录。首先,编辑 Docker 的 daemon 配置文件:

sudo nano /etc/docker/daemon.json

如果文件不存在,你需要创建它。在文件中添加或修改以下内容:

{
    "data-root": "/data1/docker"
}

确保 JSON 格式正确。保存并关闭文件。

4. 重启 Docker 服务

更改配置后,重启 Docker 服务以应用更改:

sudo systemctl start docker

5. 验证更改

最后,验证 Docker 是否正在使用新的数据目录。你可以通过检查 Docker 信息来完成这一步:

docker info | grep 'Docker Root Dir'

输出应显示新的数据目录 /data1/docker

6. 清理(可选)

确认一切正常工作后,你可以删除旧的 Docker 数据目录来释放空间:

sudo rm -rf /var/lib/docker

注意事项

  • 在执行这些操作之前,请确保你已备份 /var/lib/docker 目录中的重要数据,以防万一发生数据丢失。
  • 确保新的目录(在这个例子中是 /data1/docker)有足够的空间和适当的权限设置。
  • 如果 Docker 在迁移后表现异常,检查 daemon.json 中的配置是否正确,并确保 Docker 服务已正确重启。
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐