开发环境搭建-Ubuntu进行docker安装以及后续出现的问题解决 #55

Open
opened 2024-09-11 12:01:13 +08:00 by 12390900721cs · 1 comment

这里使用的是Ubuntu22.04.3。

  1. docker安装
    根据课件进行操作时,直接使用
    sudo apt install docker.io
    进行docker安装,出现如下问题:
    33ef019cc8c2b559bf84bf00a627c8b.png
  • 解决方案
    这里只需要使用
    sudo apt update
    进行更新即可。
  1. NVIDIA Container Toolkit安装
    简介:NVIDIA Container Toolkit 是一个工具集,使用户能够在容器化环境(如 Docker 或 Kubernetes)中高效使用 NVIDIA GPU 进行加速计算。它提供了一整套工具,使用户可以轻松将 NVIDIA GPU 的计算能力集成到容器中,用于深度学习、科学计算等领域的工作负载。
    · NVIDIA Container Toolkit 允许在容器中使用 GPU 资源,从而使得基于容器的应用可以在各种平台上轻松运行并利用 GPU 进行加速。
    · 容器运行时(如 Docker)通过 NVIDIA Container Runtime 将 GPU 计算资源暴露给容器中的应用。
    · 通过与 Docker 的无缝集成,用户可以通过 docker run 命令启动使用 GPU 的容器,只需要添加 --gpus 参数即可,如:docker run --gpus all。
    · 工具集还支持将多个 GPU 映射到容器中,并控制每个容器可以使用的 GPU 数量或具体的 GPU 设备。

docker安装完成后按照课件使用
systemctl restart docker
重启出现如下错误:
4a57ea7dd51b8cc2b57c9c490389d58.png
这个错误表明,你的 Ubuntu 系统没有使用 systemd 作为初始化系统(PID 1),因此不能通过 systemctl 来管理服务。
一开始尝试跳过此问题,直接进行后续镜像安装。但是没有办法推进。发现是关于docker的设置不弄好就没法用,需回头尝试解决问题。

  • 解决方案
    查阅资料发现如果是在 WSL(Windows Subsystem for Linux)中运行 Ubuntu,那么默认情况下 WSL 不使用 systemd。可以通过以下方法来解决问题。
  1. 确认系统是否使用 systemd
    首先,确认系统是否使用了 systemd。你可以通过以下命令检查:
    ps -p 1 -o comm=
    如果输出是 systemd,那么系统是使用 systemd 的。
    如果输出是 init 或 other,说明你的系统不使用 systemd。
  2. 启用 systemd(如果是在 WSL 中)
    如果你在 WSL(Windows Subsystem for Linux)中运行 Ubuntu,可以启用对 systemd 的支持(默认 WSL 2 不支持 systemd)。从 WSL 2 之后的版本,可以通过以下步骤启用 systemd 支持。
    步骤:
    更新 WSL 到最新版本: 在 Windows PowerShell(这里是windows的Shell!)中运行:
    wsl --update
    编辑 WSL 配置文件,启用 systemd: 在 WSL(这里又回来了) 终端中编辑 /etc/wsl.conf 文件:
    sudo nano /etc/wsl.conf
    添加以下内容:
    [boot] systemd=true
    重启 WSL: 保存配置文件后,重启 WSL(这里又是在Windows的终端):
    wsl --shutdown
    测试 systemctl: 重启后,检查是否可以使用 systemctl:
    systemctl list-units
    如果显示正在运行的服务列表,说明 systemd 已启用。

补充:
启动docker时,报错
$ sudo systemctl start docker Failed to start docker.service: Interactive authentication required. See system logs and 'systemctl status docker.service' for details.
说明没有启动docker服务。使用命令启动,并查看docker信息
sudo service docker start #启动docker服务 sudo docker info #查看docker信息
如果有以下打印信息说明docker启动正确:
b7e64d24afca046414620ef1fc0ea65.png

总结
主要还是最开始关于ubuntu中下载docker以及后续的配置问题,需要确认系统使用systemd而不是init。这样子改完systemd的配置后后续的toolkit以及镜像的安装都没有出现问题。b9143f7d512e5dfbb48223470206cf7.png

这里使用的是Ubuntu22.04.3。 1. docker安装 根据课件进行操作时,直接使用 `sudo apt install docker.io` 进行docker安装,出现如下问题: ![33ef019cc8c2b559bf84bf00a627c8b.png](/attachments/a7550111-adfb-4f73-9835-c87ee234ffbe) - 解决方案 这里只需要使用 `sudo apt update` 进行更新即可。 2. NVIDIA Container Toolkit安装 简介:NVIDIA Container Toolkit 是一个工具集,使用户能够在容器化环境(如 Docker 或 Kubernetes)中高效使用 NVIDIA GPU 进行加速计算。它提供了一整套工具,使用户可以轻松将 NVIDIA GPU 的计算能力集成到容器中,用于深度学习、科学计算等领域的工作负载。 · NVIDIA Container Toolkit 允许在容器中使用 GPU 资源,从而使得基于容器的应用可以在各种平台上轻松运行并利用 GPU 进行加速。 · 容器运行时(如 Docker)通过 NVIDIA Container Runtime 将 GPU 计算资源暴露给容器中的应用。 · 通过与 Docker 的无缝集成,用户可以通过 docker run 命令启动使用 GPU 的容器,只需要添加 --gpus 参数即可,如:docker run --gpus all。 · 工具集还支持将多个 GPU 映射到容器中,并控制每个容器可以使用的 GPU 数量或具体的 GPU 设备。 docker安装完成后按照课件使用 `systemctl restart docker` 重启出现如下错误: ![4a57ea7dd51b8cc2b57c9c490389d58.png](/attachments/3158e48f-3db2-4933-b0a0-8d0a483bfa72) 这个错误表明,你的 Ubuntu 系统没有使用 systemd 作为初始化系统(PID 1),因此不能通过 systemctl 来管理服务。 一开始尝试跳过此问题,直接进行后续镜像安装。但是没有办法推进。发现是关于docker的设置不弄好就没法用,需回头尝试解决问题。 - 解决方案 查阅资料发现如果是在 WSL(Windows Subsystem for Linux)中运行 Ubuntu,那么默认情况下 WSL 不使用 systemd。可以通过以下方法来解决问题。 1. 确认系统是否使用 systemd 首先,确认系统是否使用了 systemd。你可以通过以下命令检查: `ps -p 1 -o comm=` 如果输出是 systemd,那么系统是使用 systemd 的。 如果输出是 init 或 other,说明你的系统不使用 systemd。 2. 启用 systemd(如果是在 WSL 中) 如果你在 WSL(Windows Subsystem for Linux)中运行 Ubuntu,可以启用对 systemd 的支持(默认 WSL 2 不支持 systemd)。从 WSL 2 之后的版本,可以通过以下步骤启用 systemd 支持。 步骤: 更新 WSL 到最新版本: 在 **Windows PowerShell**(这里是windows的Shell!)中运行: `wsl --update` 编辑 WSL 配置文件,启用 systemd: 在 **WSL**(这里又回来了) 终端中编辑 /etc/wsl.conf 文件: `sudo nano /etc/wsl.conf` 添加以下内容: `[boot] systemd=true ` 重启 WSL: 保存配置文件后,重启 WSL(这里又是在Windows的终端): `wsl --shutdown ` 测试 systemctl: 重启后,检查是否可以使用 systemctl: `systemctl list-units` 如果显示正在运行的服务列表,说明 systemd 已启用。 **补充:** 启动docker时,报错 ` $ sudo systemctl start docker Failed to start docker.service: Interactive authentication required. See system logs and 'systemctl status docker.service' for details. ` 说明没有启动docker服务。使用命令启动,并查看docker信息 `sudo service docker start #启动docker服务 sudo docker info #查看docker信息` 如果有以下打印信息说明docker启动正确: ![b7e64d24afca046414620ef1fc0ea65.png](/attachments/1fa0aa0a-1379-4f7f-94c8-faa747d7d859) **总结** 主要还是最开始关于ubuntu中下载docker以及后续的配置问题,需要确认系统使用systemd而不是init。这样子改完systemd的配置后后续的toolkit以及镜像的安装都没有出现问题。![b9143f7d512e5dfbb48223470206cf7.png](/attachments/e9dc46ba-7dcd-43b5-ad9a-feb8a9a0bc8d)
Author

非常好的文章,有深度的思考。

非常好的文章,有深度的思考。
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: HswOAuth/llm_course#55
No description provided.