安装docker

# Docker引擎(守护进程)的安装必须在root权限下完成:
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io

​#服务启动与初始化​:安装后需启动Docker服务:

sudo systemctl start docker  # 启动服务
sudo systemctl enable docker  # 设置开机自启

🐳 Docker 启动失败与拉取镜像超时问题解决记录

记录一次在 Ubuntu 环境中使用 Docker 时遇到的问题与解决过程,主要包括:

  • Docker 服务启动失败
  • 无法拉取镜像,连接 Docker Hub 超时

📌 问题一:Docker 服务启动失败

🔧 错误信息

sudo systemctl start docker

Job for docker.service failed because the control process exited with error code.
See "systemctl status docker.service" and "journalctl -xeu docker.service" for details.
sudo systemctl status docker -l
× docker.service - Docker Application Container Engine
    Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: enabled)
    Active: failed (Result: exit-code)
    ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
    ...

✅ 解决方案:daemon.json 配置错误

查看日志:

sudo journalctl -xeu docker.service

没有给出明显原因,于是尝试手动启动 Docker:

sudo /usr/bin/dockerd -D

输出:

unable to configure the Docker daemon with file /etc/docker/daemon.json: invalid character '/' looking for beginning of value

问题定位/etc/docker/daemon.json 文件格式错误,含有非法字符(如注释 // 等)。

✅ 修复方式:

重命名或删除配置文件:

sudo mv /etc/docker/daemon.json /etc/docker/daemon.json.bak

重新启动 Docker:

sudo systemctl restart docker

验证成功启动:

sudo systemctl status docker

📌 问题二:无法拉取 Docker 镜像

🔧 报错信息:

docker pull hello-world
Error response from daemon: Get "https://registry-1.docker.io/v2/": context deadline exceeded

说明 Docker 无法连接 Docker Hub。

🧭 网络测试:

curl -I https://registry-1.docker.io/v2/

结果:连接超时 → Docker Hub 被墙或 DNS 污染


✅ 解决方案:配置镜像加速器

编辑配置文件:

sudo mkdir -p /etc/docker
sudo nano /etc/docker/daemon.json

写入以下内容:

{
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://registry.docker-cn.com",
    "https://hub-mirror.c.163.com"
  ],
  "dns": ["8.8.8.8", "223.5.5.5"]
}

保存后,重启 Docker:

sudo systemctl daemon-reexec
sudo systemctl restart docker

再次拉取镜像测试:

docker pull hello-world

🧠 总结

问题 原因 解决方案
Docker 启动失败 daemon.json 格式错误 修复或移除配置文件
拉取镜像失败 Docker Hub 被墙 / DNS 污染 配置国内镜像加速器 + DNS
长期失败 网络封锁严重 使用代理或离线导入