ubuntu22.04离线一键安装gpu版docker

一、安装前准备

1、安装ubuntu22.04系统

2、安装显卡驱动

3、下载gpu版docker离线包

4、直接执行脚本文件,一键部署

二、docker部署

bash 复制代码
sudo sh ./install.sh

一键部署docker脚本

bash 复制代码
#!/bin/bash
set -e

DOCKER_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_*.deb

echo "[2/4] 安装 NVIDIA 工具包..."
sudo apt install -y ./libnvidia-container*.deb ./nvidia-container-toolkit*.deb

echo "[3/4] 配置 Docker GPU Runtime 和自定义数据目录..."
sudo mkdir -p /etc/docker
cat <<EOF | sudo tee /etc/docker/daemon.json
{
  "data-root": "$DOCKER_ROOT",
  "default-runtime": "nvidia",
  "runtimes": {
    "nvidia": {
      "path": "nvidia-container-runtime",
      "runtimeArgs": []
    }
  }
}
EOF

echo "🔄 重启 Docker 服务并应用配置..."
sudo systemctl daemon-reexec
sudo systemctl restart docker
sudo systemctl enable docker

echo "[4/4] 允许非 root 用户 '$CURRENT_USER' 使用 Docker..."
sudo groupadd -f docker
sudo usermod -aG docker "$CURRENT_USER"

echo "✅ 安装完成!Docker 镜像路径: $DOCKER_ROOT"
echo "👉 当前用户已加入 docker 组,请重新登录或执行以下命令生效:"
echo ""
echo "   newgrp docker"
echo ""

可以自定义自己的docker镜像安装位置,并且添加用户组,不用root权限执行。

三、docker常用命令

bash 复制代码
# docekr系统设置
sudo systemctl daemon-reexec
sudo systemctl restart docker
sudo systemctl enable docker

# docker创建
docker pull docker
docker images
docker 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/bash
docker ps -a
docker exec -it image_id /bin/bash

# docker常用命令
docker start image_id
docker rm image_id

# 打包镜像
docker build -t image_name:tag -f Dockerfile .
docker save -o image_name.tar image_name:tag
docker load -i image_id.tar

一键打包镜像脚本

bash 复制代码
#!/bin/bash
set -e

IMAGE_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" -<<EOF
FROM $IMAGE_SRC
CMD ["bash"]
EOF

echo "💾 保存离线镜像为: $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"
相关推荐
2501_920047031 小时前
k8s-ingress控制器
云原生·容器·kubernetes
K_i1342 小时前
Docker、容器、虚拟机到底是什么
docker·微服务·云原生·容器·kubernetes
江湖有缘4 小时前
【Docker项目实战】使用Docker部署ShowDoc文档管理工具
java·docker·容器
XYiFfang4 小时前
【Docker】解决Docker中“exec format error”错误:架构不匹配的完整指南
docker·容器·架构
alenliu06216 小时前
在 Ubuntu22.04 进行envoy沙盒实验
docker·envoy·ubuntu22.04
致宏Rex17 小时前
Docker 完整教程(3,4) | 网络与挂载
运维·docker·容器
不语n19 小时前
Windows+Docker+AI开发板打造智能终端助手
python·docker·树莓派·香橙派·dify·ollama·ai开发板
荣光波比20 小时前
Docker(三)—— Docker Compose 编排与 Harbor 私有仓库实战指南
运维·docker·容器·云计算
落日漫游20 小时前
DockerCE与cri-docker核心区别解析
运维·docker·kubernetes
努力搬砖的咸鱼21 小时前
Docker 三剑客:镜像、容器、仓库
docker·云原生·容器