文章目录
背景介绍
现在没有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):
- 选择 “Something else” → “Continue”
- 选择目标磁盘(通常为 /dev/nvme0n1 或 /dev/sda)
- 创建分区表:GPT(新磁盘需此步骤)
- 按下表逐个创建分区:
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.