Ubuntu Docker 完整安装+避坑配置文档(解决403/域名解析/配置报错)
2026/8/25 5:40:49 网站建设 项目流程

Ubuntu Docker 完整安装+避坑配置文档(解决403/域名解析/配置报错)

一、文档说明

本文档为Ubuntu 全系通用Docker 官方标准安装教程,整合实操踩坑解决方案,彻底解决:

  • vim E212 无法打开并写入文件
  • docker pull 403 Forbidden
  • lookup xxx on 127.0.0.53:53 no such host 域名解析失败
  • 混淆 config.json / daemon.json 配置不生效
  • 旧镜像源失效、DNS 解析异常、权限报错等问题

适用系统:Ubuntu 20.04 / 22.04 / 24.04 及以上

二、环境预处理(必做)

1. 卸载系统旧版残留 Docker(避免冲突)

系统自带旧版 docker.io 容易引发兼容问题,彻底卸载清理:

bash
sudo apt remove -y docker docker-engine docker.io containerd runc
sudo apt autoremove -y

2. 更新系统依赖

bash
sudo apt update && sudo apt upgrade -y

三、官方安装 Docker(稳定版)

1. 安装依赖工具

bash
sudo apt install -y ca-certificates curl gnupg lsb-release

2. 添加 Docker 官方 GPG 密钥

bash
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

3. 写入 Docker 官方软件源

bash
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

4. 安装最新稳定版 Docker

bash
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

四、基础服务配置(必做)

1. 启动服务并设置开机自启

bash
sudo systemctl start docker
sudo systemctl enable docker

2. 普通用户免 sudo 操作 Docker(核心优化)

解决每次执行 docker 命令必须加 sudo 的问题:

bash
sudo usermod -aG docker $USER

重要:执行后必须退出终端重新登录,权限才生效

3. 验证安装成功

bash
docker --version
docker compose version

五、镜像加速器 + DNS 终极避坑配置(解决403/解析失败)

⚠️ 核心避坑知识点(重中之重)

  • /etc/docker/daemon.json:全局服务配置,加速器、DNS 必须写这里(生效)
  • ~/.docker/config.json:用户客户端配置,仅存登录凭证,写加速器完全无效,还会报错
  • 网易镜像源hub-mirror.c.163.com现已大量失效,会报域名解析错误,禁止使用

1. 清理错误旧配置

bash
# 备份错乱的客户端配置,解决认证403问题
mv ~/.docker/config.json ~/.docker/config.json.bak
# 生成干净空配置
mkdir -p ~/.docker
echo "{}" > ~/.docker/config.json

2. 写入终极可用配置(DNS+稳定镜像源)

修复127.0.0.53DNS 解析失败问题,搭配高可用镜像源,杜绝403报错:

bash
sudo tee /etc/docker/daemon.json <<'EOF'
{
"dns": ["114.114.114.114", "8.8.8.8"],
"registry-mirrors": [
"https://docker.m.daocloud.io"
]
}
EOF

3. 阿里专属镜像源配置(可选)

如需使用阿里云镜像,替换为自己专属地址(通用地址会403):

获取地址:阿里云控制台 → 容器镜像服务ACR → 镜像加速器

bash
sudo tee /etc/docker/daemon.json <<'EOF'
{
"dns": ["114.114.114.114", "8.8.8.8"],
"registry-mirrors": [
"你的阿里专属地址",
"https://docker.m.daocloud.io"
]
}
EOF

4. 重载配置并重启 Docker

bash
sudo systemctl daemon-reload
sudo systemctl restart docker

5. 验证配置生效

bash
docker info | grep -A5 "Registry Mirrors"

输出显示配置的镜像地址即为成功。

六、最终测试(零报错验证)

bash
docker pull hello-world

成功拉取镜像、运行容器,代表安装+配置全部完成,无403、无解析错误。

七、常见报错解决方案(专属本次踩坑)

1. vim E212: 无法打开并写入文件

原因:目录不存在,直接创建即可:

bash
mkdir -p ~/.docker

2. lookup xxx on 127.0.0.53:53 no such host

原因:系统本地DNS解析异常,解决方案:配置文件中强制指定公共DNS(本文已内置)。

3. docker pull 403 Forbidden

  • 旧网易镜像源失效,直接删除
  • 非阿里服务器使用阿里公共地址会403,必须用专属地址或替换 DaoCloud 源
  • ~/.docker/config.json 存在错乱认证,执行本文「清理错误旧配置」步骤

4. sudo vim ~/.docker 改完不生效

原因:sudo 下 ~ 指向 root 目录,修改的不是当前用户配置,禁止用 sudo 编辑用户级配置文件。

八、日常运维常用命令

bash
# 查看docker状态
systemctl status docker
# 重启docker
sudo systemctl restart docker
# 关闭开机自启
sudo systemctl disable docker

|(注:部分内容可能由 AI 生成)

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询