在有NVIDIA 4090工作站上配置 Ubuntu 和 Docker【超全面一站式攻略】【理解+实操】

背景介绍

现在没有docker,已经要不配开源代码了。
所以,准备重新配置环境。

什么是Docker

Docker 是一个开源的容器化平台,用于开发、部署和运行应用程序。它的核心思想是:将应用程序及其所有依赖项(代码、运行时环境、系统工具、库等)打包到一个标准化的、可移植的“容器”中。这个容器可以在任何安装了 Docker 的环境中运行,保证环境的一致性。
Docker 的核心在于 容器化。通过将应用及其环境打包成 镜像,然后在隔离的 容器 中运行这些镜像,解决了环境不一致、依赖冲突、部署复杂等问题。使用步骤通常是:安装 Docker -> 获取镜像 (pull) -> 运行容器 (run) -> 管理容器 (ps, stop, rm, logs, exec) -> (可选)编写 Dockerfile 构建自定义镜像 (build)。掌握这些基础后,再学习 Docker Compose 和卷/网络管理能让你更高效地使用 Docker。

核心概念:

镜像:

一个只读的模板,包含了运行应用程序所需的所有文件系统结构、依赖项、代码和配置。镜像是创建容器的“蓝图”。类比:镜像就像安装操作系统的 .iso 文件,或者面向对象编程中的“类”。

容器:

镜像是静态的,容器是镜像的运行实例。当你运行一个镜像时,Docker 会创建一个隔离的环境(容器),其中运行着镜像定义的应用程序。容器是轻量级、可移植、自包含的。类比:容器就像是从 .iso 文件安装好的、正在运行的虚拟机(但比虚拟机轻量得多),或者面向对象编程中类的“实例对象”。

Dockerfile:

一个文本文件,包含了一系列构建 Docker 镜像所需的指令(如安装软件、复制文件、设置环境变量、暴露端口等)。开发者通过编写 Dockerfile 来定义如何构建他们的应用程序镜像。

Registry:

存储和分发 Docker 镜像的服务。Docker Hub 是最著名的公共 Registry,包含大量官方和社区维护的镜像(如 Ubuntu, Nginx, MySQL, Python, Node.js 等)。也可以搭建私有的 Registry(如 Harbor, GitLab Container Registry)。

Docker 的主要优势:

环境一致性:

“一次构建,处处运行”。开发、测试、生产环境完全一致,避免“在我机器上是好的”问题。

隔离性:

容器之间以及容器与宿主机之间是相互隔离的,一个容器的问题不会影响其他容器或主机。

轻量高效:

容器共享宿主机的操作系统内核,无需为每个应用加载完整的操作系统,启动更快,资源占用(CPU、内存、磁盘)远低于虚拟机。

可移植性:

容器可以在任何支持 Docker 的平台上运行(Linux, Windows, macOS, 云服务器)。

标准化:

Docker 提供了构建、分发、运行容器的标准方式。

微服务友好:

非常适合构建和部署微服务架构,每个服务可以独立容器化。

简化配置:

将环境配置固化在镜像或 Docker Compose 文件中。

快速扩展:

可以快速启动多个相同的容器实例以实现水平扩展。

如何在ubuntu系统中使用docker

在 Ubuntu 系统中使用 Docker 时,关于 NVIDIA 驱动、Ubuntu 版本和 Kernel(内核)的配置,需要明确以下几点:

NVIDIA 驱动

宿主机必须安装 NVIDIA 驱动
Docker 容器本身不安装或管理宿主机级别的硬件驱动。
若要在容器内使用 GPU(如运行 CUDA 应用),必须先在 Ubuntu 宿主机上正确安装 NVIDIA 驱动(通过 apt 或官方 .run 文件安装)。

容器内只需安装 CUDA Toolkit
容器内只需安装与应用程序兼容的 CUDA Toolkit 或 cuDNN 库(如 nvidia/cuda 官方镜像已包含)。
容器通过 Docker 的 --gpus 参数调用宿主机的驱动。

Ubuntu 版本

容器内的 Ubuntu 版本独立于宿主机
容器基于镜像运行(如 ubuntu:22.04),与宿主机的 Ubuntu 版本无关。
例如:宿主机是 Ubuntu 20.04,仍可运行 ubuntu:18.04 或 debian:12 的容器。

Kernel(内核)

容器共享宿主机的内核
Docker 容器 不拥有独立的内核,而是直接使用宿主机的 Kernel。
执行 uname -r 在容器内看到的版本与宿主机一致。

安装Ubuntu系统

选择并安装 Ubuntu 版本

推荐版本:Ubuntu 22.04 LTS (Jammy Jellyfish)

· 最新 LTS 版本,提供长期支持(直到 2027 年)
· 对 NVIDIA 40 系列显卡有良好支持
· 内核版本:5.15(或更高)

下载地址

https://releases.ubuntu.com/22.04/ubuntu-22.04.5-desktop-amd64.iso

如果下载慢,备用下载地址

https://mirrors.ustc.edu.cn/ubuntu-releases/22.04/ubuntu-22.04.5-desktop-amd64.iso

制作启动盘

以下是制作 Ubuntu 启动盘的完整步骤,支持 Windows系统:

准备工作:

下载好的 Ubuntu ISO 文件(如 ubuntu-22.04.4-desktop-amd64.iso)

U盘(至少8GB容量,建议使用USB 3.0)

目标电脑(安装Ubuntu的工作站)

备份U盘数据:制作过程会完全格式化U盘,请提前备份所有重要数据

下载 Rufus:

官网:https://rufus.ie/
选择便携版(Rufus x.xx.exe)下载

运行Rufus:


出现弹窗全选择确定
进度条会显示写入状态(约5-15分钟,取决于U盘速度)
完成后状态显示"准备就绪"
如果后续插入ubuntu工作站后无法使用,重新操作,分区类型选择MBR

Ubuntu 工作站安装详细指南(针对 NVIDIA RTX 4090 优化)

以下是专为配备 NVIDIA RTX 4090 显卡的工作站设计的 Ubuntu 22.04 LTS 安装流程,包含关键设置和优化步骤:

安装前准备

硬件连接:

· 确保显示器连接到 NVIDIA 显卡(而非主板视频接口)
· 连接有线网络(WiFi 安装后配置更简单)
· 准备键盘鼠标

BIOS/UEFI 设置:

· 开机按 Del/F2 进入 BIOS
· 禁用 Secure Boot
· 启用 UEFI 模式(禁用 Legacy/CSM)
· 设置启动顺序:U盘为第一启动项
· 保存并退出

安装步骤详解

启动安装程序

在这里插入图片描述

安装选项(一)

· 选择 “Ubuntu*”
· 选择“Install Ubuntu”
· 语言选择:English (US)(避免后续乱码问题)
· 安装选择:Minimal installation
· 勾选全部other options,包括download updates和install third-part software

安装选项(二)分区方案(关键步骤)

推荐手动分区(Something else):

  1. 选择 “Something else” → “Continue”
  2. 选择目标磁盘(通常为 /dev/nvme0n1 或 /dev/sda)
  3. 创建分区表:GPT(新磁盘需此步骤)
  4. 按下表逐个创建分区:
    在这里插入图片描述
    4.1. 点击 “+” 添加分区
    4.2. 设置类型、大小、挂载点
    4.3. /opt和/data为可选项
    4.4. 实例参考(硬盘比较大,所以给swap和根目录各1个T的空间)在这里插入图片描述

时区设置

地图选择 Shanghai 或手动输入 Asia/Shanghai
确保时间正确

用户创建

用户名:推荐英文
计算机名:保持默认或自定义
密码:使用强密码

开始安装

确认所有设置
点击 “Install Now”
接受磁盘更改确认
安装时间:约10-25分钟(取决于硬件)

首次启动配置

在software updater的弹窗中选择更新,完成后重启电脑,再进行后续操作

浏览器安装

先 Ctrl + Alt + T:打开终端
安装预装浏览器(Firefox)

sudo apt update && sudo apt install firefox

输入

firefox

运行浏览器

驱动更新(必须步骤)

先 Ctrl + Alt + T:打开终端

# 添加显卡驱动PPA
sudo add-apt-repository ppa:graphics-drivers/ppa -y

# 更新软件列表
sudo apt update && sudo apt upgrade -y

# 安装专有驱动
sudo ubuntu-drivers autoinstall

如果运行sudo apt update && sudo apt upgrade -y后,software updater弹窗提醒更新,先进行更新,更新后按照要求重启电脑,再运行sudo ubuntu-drivers autoinstall。

安装完成后,重启电脑

验证驱动

nvidia-smi

应显示类似信息:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 575.64.03   Driver Version: 575.64.03   CUDA Version: 12.9     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  On   | 00000000:01:00.0  On |                  Off |
|  0%   42C    P8    28W / 450W |    347MiB / 24564MiB |      1%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

显卡性能优化设置

# 禁用Nouveau驱动
sudo bash -c "echo 'blacklist nouveau' >> /etc/modprobe.d/blacklist-nouveau.conf"
sudo bash -c "echo 'options nouveau modeset=0' >> /etc/modprobe.d/blacklist-nouveau.conf"
sudo update-initramfs -u

# 启用NVIDIA持久模式
sudo nvidia-smi -pm 1

# 设置性能模式
sudo nvidia-smi -ac 7001,1950  # RTX 4090的推荐频率

安装开发工具

sudo apt install -y build-essential git cmake

电源管理(防止4090高功耗)

# 创建配置文件
sudo tee /etc/modprobe.d/nvidia-power.conf <<EOF
options nvidia NVreg_DynamicPowerManagement=0x02
options nvidia NVreg_EnableMSI=1
EOF

# 更新initramfs
sudo update-initramfs -u

第一道指令为多行指令,需要同时写好,写的过程中分行。也可以直接复制。Ubuntu命令行分行操作为shift+Enter,输好后直接Enter即可生效。

配置SWAP优化

# 编辑sysctl配置
sudo nano /etc/sysctl.conf

# 添加以下内容:
vm.swappiness=10
vm.vfs_cache_pressure=50

使用键盘↓,移动到配置文件的末尾,最后添加内容后,ctrl+x退出文件,退出过程中选择Y,保持修改。

安装监控工具

sudo apt install -y nvtop bpytop lm-sensors

验证安装

watch -n 1 nvidia-smi

故障排除

如果上述配置环境过程中出现如下错误,可参考操作。

黑屏/无法进入桌面

· 启动时按 Shift 进入 GRUB
· 选择 “Advanced options” → “recovery mode”
· 选择 “root shell”

进入命令行界面,重装驱动:

apt purge nvidia-*
ubuntu-drivers autoinstall
reboot
显卡驱动冲突
# 完全清除旧驱动
sudo apt purge *nvidia*
sudo apt autoremove
sudo apt install nvidia-driver-535

在 Ubuntu 工作站上配置 Docker

以下是针对配备 NVIDIA RTX 4090 显卡的 Ubuntu 工作站的 Docker 完整配置指南,包含 GPU 支持和性能优化:

安装 Docker 引擎

# 更新系统
sudo apt update
sudo apt upgrade -y

# 安装依赖
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

# 添加 Docker 官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 添加 Docker 仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安装 Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

安装 NVIDIA Container Toolkit

# 创建配置目录
sudo mkdir -p /etc/docker

# 配置国内镜像源(使用轩辕镜像)
sudo tee /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": ["https://docker.xuanyuan.me"]
}
EOF

# 应用配置
sudo systemctl daemon-reload
sudo systemctl restart docker

设置用户权限

# 添加当前用户到 docker 组
sudo usermod -aG docker $USER

# 立即生效(需要重新登录或使用 newgrp)
newgrp docker

# 验证组成员
groups | grep docker

验证安装并运行 hello-world

# 检查 Docker 状态
sudo systemctl status docker

# 检查镜像源配置
docker info | grep -A 2 "Registry Mirrors"

# 运行 hello-world 容器
docker run --rm hello-world

如果一切正常,您应该看到类似以下输出:
Hello from Docker!
This message shows that your installation appears to be working correctly.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值