ubuntu22.04离线一键安装gpu版docker
一、安装前准备
1、安装ubuntu22.04系统
2、安装显卡驱动
3、下载gpu版docker离线包
4、直接执行脚本文件,一键部署
二、docker部署
sudo sh ./install.sh
一键部署docker脚本
#!/bin/bashset -eDOCKER_ROOT=\"/opt/docker\"CURRENT_USER=$(logname) # 获取当前登录用户(非 sudo 用户)echo \"[0/4] 创建 Docker 数据目录: $DOCKER_ROOT\"sudo mkdir -p \"$DOCKER_ROOT\"sudo chown root:root \"$DOCKER_ROOT\"echo \"[1/4] 安装 Docker...\"sudo apt install -y ./containerd.io_*.deb ./docker-ce-cli_*.deb ./docker-ce_*.deb ./docker-buildx-plugin_*.deb ./docker-compose-plugin_*.debecho \"[2/4] 安装 NVIDIA 工具包...\"sudo apt install -y ./libnvidia-container*.deb ./nvidia-container-toolkit*.debecho \"[3/4] 配置 Docker GPU Runtime 和自定义数据目录...\"sudo mkdir -p /etc/dockercat <<EOF | sudo tee /etc/docker/daemon.json{ \"data-root\": \"$DOCKER_ROOT\", \"default-runtime\": \"nvidia\", \"runtimes\": { \"nvidia\": { \"path\": \"nvidia-container-runtime\", \"runtimeArgs\": [] } }}EOFecho \"🔄 重启 Docker 服务并应用配置...\"sudo systemctl daemon-reexecsudo systemctl restart dockersudo systemctl enable dockerecho \"[4/4] 允许非 root 用户 \'$CURRENT_USER\' 使用 Docker...\"sudo groupadd -f dockersudo usermod -aG docker \"$CURRENT_USER\"echo \"✅ 安装完成!Docker 镜像路径: $DOCKER_ROOT\"echo \"👉 当前用户已加入 docker 组,请重新登录或执行以下命令生效:\"echo \"\"echo \" newgrp docker\"echo \"\"
可以自定义自己的docker镜像安装位置,并且添加用户组,不用root权限执行。
三、docker常用命令
# docekr系统设置sudo systemctl daemon-reexecsudo systemctl restart dockersudo systemctl enable docker# docker创建docker pull dockerdocker imagesdocker run --gpus all --runtime=nvidia --network host --name test --restart always -itd --cap-add=SYS_PTRACE -v /home/ubuntu:/home -p 8822:22 image_id /bin/bashdocker ps -adocker exec -it image_id /bin/bash# docker常用命令docker start image_iddocker rm image_id# 打包镜像docker build -t image_name:tag -f Dockerfile .docker save -o image_name.tar image_name:tagdocker load -i image_id.tar
一键打包镜像脚本
#!/bin/bashset -eIMAGE_SRC=\"docker.m.daocloud.io/ubuntu:22.04\"IMAGE_NAME=\"ubuntu22.04-offline\"IMAGE_TAG=\"v1.0\"FULL_IMAGE_NAME=\"${IMAGE_NAME}:${IMAGE_TAG}\"TAR_NAME=\"${IMAGE_NAME}-${IMAGE_TAG}.tar\"echo \"🧊 拉取基础镜像: $IMAGE_SRC\"docker pull \"$IMAGE_SRC\"echo \"📦 构建本地镜像: $FULL_IMAGE_NAME\"docker build -t \"$FULL_IMAGE_NAME\" -<<EOFFROM $IMAGE_SRCCMD [\"bash\"]EOFecho \"💾 保存离线镜像为: $TAR_NAME\"docker save -o \"$TAR_NAME\" \"$FULL_IMAGE_NAME\"echo \"✅ 镜像打包完成:$TAR_NAME\"echo \"👉 可在离线机器导入命令:docker load -i $TAR_NAME\"echo \"👉 然后运行镜像:docker run -it --rm $FULL_IMAGE_NAME\"