正确的 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 源。推荐先运行一键安装脚本,应该就能解决问题!