|
正确的 Debian 12 安装方法:
## 1. 正确的 Debian 12 Docker 安装步骤
### 步骤1:清理错误的 Ubuntu 源 ```bash sudo rm -f /etc/apt/sources.list.d/docker.list sudo apt update ```
### 步骤2:安装依赖 ```bash sudo apt update sudo apt install -y \ ca-certificates \ curl \ gnupg \ lsb-release ```
### 步骤3:添加 Docker 官方 GPG 密钥(Debian 版本) ```bash sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg ```
### 步骤4:添加正确的 Debian Docker 源 ```bash echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null ```
### 步骤5:更新并安装 ```bash sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin ```
## 2. 一键安装脚本(Debian 12 专用)
创建 `install_docker_debian.sh`:
```bash #!/bin/bash echo "=== Debian 12 Docker 一键安装脚本 ==="
# 显示系统信息 echo "1. 系统信息:" lsb_release -a echo "架构: $(dpkg --print-architecture)"
# 清理可能存在的错误配置 echo "2. 清理旧配置..." sudo rm -f /etc/apt/sources.list.d/docker.list 2>/dev/null
# 卸载旧版本 echo "3. 卸载旧版本 Docker..." sudo apt-get remove -y docker docker-engine docker.io containerd runc 2>/dev/null
# 安装依赖 echo "4. 安装依赖包..." sudo apt update sudo apt install -y \ ca-certificates \ curl \ gnupg \ lsb-release
# 创建密钥目录 sudo mkdir -p /etc/apt/keyrings
# 添加 Docker GPG 密钥 (Debian) echo "5. 添加 Docker GPG 密钥 (Debian)..." curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 添加正确的 Docker 软件源 (Debian) echo "6. 添加 Docker 软件源 (Debian)..." echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 设置正确的权限 sudo chmod a+r /etc/apt/keyrings/docker.gpg
# 更新软件包索引 echo "7. 更新软件包索引..." sudo apt update
# 安装 Docker echo "8. 安装 Docker..." sudo apt install -y \ docker-ce \ docker-ce-cli \ containerd.io \ docker-buildx-plugin \ docker-compose-plugin
# 启动 Docker 服务 echo "9. 启动 Docker 服务..." sudo systemctl enable docker sudo systemctl start docker
# 验证安装 echo "10. 验证安装..." sudo docker --version sudo docker compose version
# 测试运行 echo "11. 测试 Docker..." sudo docker run --rm hello-world
echo "=== Docker 安装完成 ===" ```
运行: ```bash chmod +x install_docker_debian.sh ./install_docker_debian.sh ```
## 3. 替代方案:使用 Debian 自带的 Docker
如果官方源还有问题,使用 Debian 12 自带的版本:
```bash # 安装 Debian 自带的 Docker sudo apt update sudo apt install -y docker.io docker-compose
# 启动服务 sudo systemctl enable docker sudo systemctl start docker
# 验证 docker --version docker-compose --version ```
## 4. 如果上述方法都失败,使用这个终极方案
```bash #!/bin/bash # 终极 Docker 安装方案
echo "=== 终极 Docker 安装方案 ==="
# 方法1:尝试官方 Docker CE install_docker_ce() { echo "尝试方法1: Docker CE 官方源..." sudo apt remove -y docker docker-engine docker.io containerd runc 2>/dev/null sudo apt update sudo apt install -y ca-certificates curl gnupg lsb-release # 添加 Docker 源 sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian bookworm stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt update if sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin; then echo "✅ Docker CE 安装成功" return 0 fi echo "❌ Docker CE 安装失败" return 1 }
# 方法2:使用 Debian 自带版本 install_docker_io() { echo "尝试方法2: Debian 自带 Docker..." if sudo apt install -y docker.io docker-compose; then echo "✅ Docker.io 安装成功" return 0 fi echo "❌ Docker.io 安装失败" return 1 }
# 方法3:使用脚本安装 install_docker_script() { echo "尝试方法3: 官方安装脚本..." curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh if docker --version &>/dev/null; then echo "✅ 脚本安装成功" return 0 fi echo "❌ 脚本安装失败" return 1 }
# 执行安装 if install_docker_ce; then echo "使用 Docker CE 版本" elif install_docker_io; then echo "使用 Docker.io 版本" elif install_docker_script; then echo "使用脚本安装版本" else echo "❌ 所有安装方法都失败了" exit 1 fi
# 启动服务 sudo systemctl enable docker sudo systemctl start docker
# 添加用户到 docker 组 sudo usermod -aG docker $USER echo "请重新登录或执行 'newgrp docker' 来应用用户组更改"
# 验证 echo "安装验证:" docker --version docker compose version ```
运行终极方案: ```bash chmod +x docker_ultimate.sh ./docker_ultimate.sh ```
## 5. 安装后的配置
```bash # 添加用户到 docker 组(避免 sudo) sudo usermod -aG docker $USER # 重新登录或执行: newgrp docker
# 配置镜像加速(国内用户) sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": [ "https://docker.mirrors.ustc.edu.cn", "https://hub-mirror.c.163.com", "https://registry.docker-cn.com" ] } EOF
sudo systemctl daemon-reload sudo systemctl restart docker
# 测试 docker run --rm hello-world ```
## 6. 验证安装成功
```bash # 检查版本 docker --version docker compose version
# 检查服务状态 systemctl status docker
# 运行测试容器 docker run --rm hello-world
# 检查信息 docker info ```
**关键点**:你的系统是 Debian 12 (bookworm),不是 Ubuntu,所以必须使用 Debian 的 Docker 源。推荐先运行一键安装脚本,应该就能解决问题!
来源:https://www.cnblogs.com/zhg1016/p/19143786 |