腾讯云Ubuntu系统配置Docker时常见错误及解决方法?

以下是腾讯云 Ubuntu 系统配置 Docker 时的常见错误及解决方法:

一、安装阶段错误

1. 无法添加 Docker 官方 GPG 密钥

# 错误:gpg: no valid OpenPGP data found
# 解决方法:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 或使用阿里云镜像
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

2. apt 更新失败

# 错误:404 Not Found 或连接超时
# 解决方法:更换国内源
sudo sed -i 's/archive.ubuntu.com/mirrors.cloud.tencent.com/g' /etc/apt/sources.list
sudo sed -i 's/security.ubuntu.com/mirrors.cloud.tencent.com/g' /etc/apt/sources.list

# 或使用阿里云镜像
sudo tee /etc/apt/sources.list.d/docker.list <<-'EOF'
deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable
EOF

3. 依赖冲突

# 错误:docker-ce 与 containerd.io 版本冲突
# 解决方法:先安装指定版本
sudo apt-get install containerd.io=1.6.8-1
sudo apt-get install docker-ce docker-ce-cli

二、权限相关错误

1. 权限拒绝(Permission denied)

# 错误:Got permission denied while trying to connect to the Docker daemon socket
# 解决方法:
sudo usermod -aG docker $USER
# 重新登录或执行:
newgrp docker
# 验证:
docker ps

2. docker.sock 权限问题

# 检查权限
ls -l /var/run/docker.sock
# 修复权限
sudo chmod 666 /var/run/docker.sock
# 或更安全的方式:
sudo chown root:docker /var/run/docker.sock

三、服务启动错误

1. Docker 服务启动失败

# 查看错误详情
sudo systemctl status docker
sudo journalctl -xe -u docker

# 常见修复:
# 清理旧配置
sudo rm -rf /var/lib/docker
# 重新安装
sudo apt-get purge docker-ce docker-ce-cli
sudo apt-get install docker-ce docker-ce-cli

2. iptables 冲突

# 错误:iptables failed
# 解决方法:
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
sudo systemctl restart docker

四、网络配置错误

1. DNS 解析失败

# 创建或修改 Docker DNS 配置
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "dns": ["8.8.8.8", "114.114.114.114"],
  "registry-mirrors": [
    "https://mirror.ccs.tencentyun.com",
    "https://docker.mirrors.ustc.edu.cn"
  ]
}
EOF
sudo systemctl restart docker

2. 端口冲突

# 查看占用端口
sudo netstat -tlnp | grep :2375
# 修改 Docker 监听端口
sudo sed -i 's/ExecStart=.*/ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock/g' /lib/systemd/system/docker.service
sudo systemctl daemon-reload
sudo systemctl restart docker

五、存储驱动错误

1. devicemapper 问题

# 检查当前驱动
docker info | grep Storage
# 修改为 overlay2(推荐)
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "storage-driver": "overlay2"
}
EOF
sudo systemctl restart docker

2. 磁盘空间不足

# 查看 Docker 磁盘使用
docker system df
# 清理无用资源
docker system prune -a
# 修改数据目录(如果需要)
sudo systemctl stop docker
sudo rsync -aP /var/lib/docker /new/path/
sudo sed -i 's/ExecStart=.*/ExecStart=/usr/bin/dockerd --data-root /new/path/docker/g' /lib/systemd/system/docker.service

六、腾讯云特定问题

1. 安全组限制

  • 确保安全组开放所需端口:
    • Docker API: 2375/2376
    • 容器应用端口
  • 控制台操作:云服务器 → 安全组 → 添加规则

2. 云硬盘挂载问题

# 如果使用云硬盘作为存储
sudo mkdir -p /data/docker
sudo mount /dev/vdb /data/docker
# 添加到 fstab
echo "/dev/vdb /data/docker ext4 defaults 0 0" | sudo tee -a /etc/fstab

七、快速诊断脚本

#!/bin/bash
echo "=== Docker 诊断 ==="
echo "1. 服务状态:"
sudo systemctl status docker --no-pager -l
echo -e "n2. Docker 版本:"
docker --version
docker-compose --version
echo -e "n3. 运行容器:"
docker ps
echo -e "n4. 网络检查:"
docker network ls
echo -e "n5. 存储检查:"
docker info | grep -A5 "Storage"
echo -e "n6. 日志最后20行:"
sudo journalctl -u docker --no-pager -n 20

八、预防措施

  1. 使用官方安装脚本(快速安装)

    curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
  2. 配置镜像提速(腾讯云内网)

    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
    "registry-mirrors": [
    "https://mirror.ccs.tencentyun.com"
    ]
    }
    EOF
  3. 定期维护

    # 每周清理
    docker system prune -f
    # 更新 Docker
    sudo apt-get update && sudo apt-get upgrade docker-ce

如果问题仍未解决,可提供具体错误信息,以便进一步诊断。

云服务器