1. Ubuntu系统下Docker引擎安装全攻略刚接触Docker时我最头疼的就是在Ubuntu上安装配置的那一堆步骤。后来在多个项目里反复折腾终于总结出一套稳定可靠的安装方法。下面我会用最直白的语言带你一步步搞定Docker安装顺便分享几个国内开发者必备的加速技巧。1.1 系统准备与依赖安装在开始之前建议先更新系统软件包列表。这个习惯能避免很多奇怪的依赖问题sudo apt update sudo apt upgrade -y安装Docker需要这几个基础依赖包它们就像搭建房子的脚手架apt-transport-https让apt能通过HTTPS协议下载软件ca-certificates数字证书验证curl命令行下载工具gnupg加密签名验证software-properties-common管理软件源的工具安装命令很简单sudo apt install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common1.2 添加Docker官方软件源这里有个小坑要注意直接使用国外源速度会很慢。我推荐先用官方源添加GPG密钥保证软件安全性再换国内镜像源加速下载# 添加官方GPG密钥 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -验证密钥是否添加成功应该看到OKsudo apt-key fingerprint 0EBFCD88接下来添加软件仓库这里我强烈建议使用国内镜像源。以清华源为例sudo add-apt-repository deb [archamd64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable1.3 安装Docker CE更新软件包列表后就可以安装Docker社区版了sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io安装完成后运行个测试容器验证下sudo docker run hello-world如果看到Hello from Docker!的欢迎信息说明安装成功。不过每次都要sudo太麻烦接着看权限配置。2. Docker权限与镜像加速配置2.1 免sudo使用Docker把当前用户加入docker用户组是个好习惯sudo groupadd docker sudo usermod -aG docker $USER newgrp docker # 立即生效现在试试不带sudo运行docker ps2.2 配置国内镜像加速默认从Docker Hub拉镜像慢得像蜗牛必须配置镜像加速。创建或修改配置文件sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json -EOF { registry-mirrors: [ https://docker.mirrors.ustc.edu.cn, https://registry.docker-cn.com ] } EOF重启Docker服务使配置生效sudo systemctl daemon-reload sudo systemctl restart docker验证是否配置成功docker info | grep Mirrors3. NVIDIA Container Toolkit深度配置3.1 前置条件检查在安装NVIDIA容器工具包前必须确保已安装NVIDIA显卡驱动运行nvidia-smi应有输出Docker版本≥19.03docker -v查看我的血泪教训曾经在驱动没装好的机器上折腾半天最后发现是驱动问题。建议先用这个命令检查nvidia-smi3.2 添加NVIDIA软件源先设置系统发行版变量适配不同Ubuntu版本distribution$(. /etc/os-release;echo $ID$VERSION_ID)添加GPG密钥时可能会遇到网络问题多试几次curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -添加软件源这里也建议使用国内镜像但NVIDIA官方源目前没有很好的替代方案curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list3.3 安装与验证更新软件包列表并安装sudo apt update sudo apt install -y nvidia-container-toolkit重启Docker服务sudo systemctl restart docker关键验证步骤测试GPU是否能在容器中使用docker run --gpus all --rm nvidia/cuda:11.0-base nvidia-smi如果看到和宿主机相同的GPU信息输出恭喜你成功了我在某次安装后没看到输出后来发现是忘了加--gpus all参数。4. 常见问题排查指南4.1 网络问题解决方案国内环境最常见的就是网络超时。除了前面提到的镜像源还可以设置DNS如8.8.8.8调整Docker守护进程的超时设置使用代理需合规合法4.2 版本冲突处理遇到过最头疼的问题就是版本不兼容。建议Ubuntu LTS版本 Docker官方推荐版本 NVIDIA驱动稳定版避免使用太新的CUDA版本4.3 权限问题排查如果遇到权限拒绝错误检查用户是否在docker组/var/run/docker.sock文件权限尝试用sudo运行确认是否是权限问题记得有一次我忘了执行newgrp docker结果权限就是不生效白白浪费半小时。5. 生产环境优化建议5.1 存储驱动选择默认的overlay2驱动在大多数情况下表现良好但如果遇到性能问题可以考虑devicemapper适合特定场景btrfs需要文件系统支持查看当前存储驱动docker info | grep Storage5.2 日志与监控配置长期运行的GPU容器需要特别注意日志管理sudo tee /etc/docker/daemon.json -EOF { log-driver: json-file, log-opts: { max-size: 100m, max-file: 3 } } EOF5.3 GPU资源限制在多任务环境下需要限制容器的GPU使用docker run --gpus device0,1 --rm nvidia/cuda:11.0-base nvidia-smi这个命令限制容器只能使用GPU 0和1。我在训练模型时经常这样隔离不同实验。