Debian 12安裝docker的正確方法
正確的 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 源。推薦先運行一鍵安裝腳本,應該就能解決問題!

浙公網安備 33010602011771號