甲骨文免费 VPS 安装 Docker CE 报错架构不支持怎么解决?

文章导读
甲骨文免费 VPS 出现 Docker CE 架构不支持报错,通常是因为实例为 ARM64 架构而使用了仅适配 x86_64 的安装源或脚本。最推荐直接使用 Docker 官方自动检测架构的安装脚本,或在配置 apt 源时明确指定 arm64 架构。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 常见问题
  7. 参考来源
A A

甲骨文免费 VPS 出现 Docker CE 架构不支持报错,通常是因为实例为 ARM64 架构而使用了仅适配 x86_64 的安装源或脚本。最推荐直接使用 Docker 官方自动检测架构的安装脚本,或在配置 apt 源时明确指定 arm64 架构。

先说结论:甲骨文免费 ARM 实例支持 Docker CE,但必须使用适配 aarch64 架构的安装方式,避免强制指定 amd64 源。

  • 先确认:使用 uname -m 检查实例架构是 aarch64 还是 x86_64。
  • 先处理:删除旧配置,使用官方脚本 curl -fsSL https://get.docker.com | sh 自动适配。
  • 再验证:运行 docker run `--rm` hello-world 确认容器正常启动。

命令速用版

如果希望快速解决架构报错,可直接执行以下命令序列,适用于 Ubuntu 20.04/22.04 及 Oracle Linux 8/9。

# 1. 确认当前架构
uname -m

# 2. 卸载可能冲突的旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc

# 3. 使用官方脚本自动安装(自动识别 ARM64)
curl -fsSL https://get.docker.com | sh

# 4. 启动服务
sudo systemctl enable `--now` docker

为什么会这样

报错核心原因是 CPU 架构与软件包架构不匹配。甲骨文免费层提供 Ampere A1 计算实例,其 CPU 架构为 ARM64(aarch64),而部分旧教程或默认脚本可能指向 x86_64(amd64)仓库。

Docker CE 官方支持 ARM64 架构,但 Linux 包管理器(apt/yum)在安装时若未检测到正确的 arch 配置,或用户手动添加了错误的源地址,就会提示架构不支持或找不到包。此外,Ubuntu 默认源中的 docker.io 与 Docker 官方源的 docker-ce 存在冲突,混用也会导致依赖报错。

分步处理

按照以下步骤清理环境并重新安装,确保架构匹配。

步骤 1:检查系统架构

执行 uname -m。如果返回 aarch64,说明是 ARM 实例;如果返回 x86_64,则是 Intel/AMD 实例。甲骨文免费 ARM 实例必须按 aarch64 处理。

步骤 2:清理旧安装

避免旧配置文件干扰,执行以下命令清理可能存在的冲突包:

sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get autoremove

步骤 3:配置官方源或直接脚本安装

方法 A(推荐):使用官方便利脚本,该脚本会自动检测架构并添加正确的源。

curl -fsSL https://get.docker.com | sh

方法 B(手动配置):如果无法使用脚本,需手动添加源时确保指定 arch。以 Ubuntu 为例:

sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg `--print-architecture`) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

注意手动配置中 arch=$(dpkg `--print-architecture`) 会自动获取当前系统架构,避免硬编码 amd64。

步骤 4:安装 Docker CE

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

怎么验证是否生效

安装完成后,需验证 Docker 守护进程是否运行且架构识别正确。

检查服务状态

sudo systemctl status docker

状态应显示 active (running)。

运行测试容器

sudo docker run `--rm` hello-world

如果输出 "Hello from Docker!" 且无架构错误,说明安装成功。

检查信息

docker version
docker info

在 docker info 输出中查看 Architecture 字段,ARM 实例应显示 aarch64。

常见坑

  • docker.io 与 docker-ce 冲突:Ubuntu 默认源包含 docker.io,官方源包含 docker-ce。两者不要同时安装,建议卸载 docker.io 后安装 docker-ce。
  • Oracle Linux 源配置:如果是 Oracle Linux 8/9,需使用 yum/dnf 而非 apt,且源地址为 https://download.docker.com/linux/centos(兼容)或官方提供的 oraclelinux 路径。
  • 网络超时:国内访问 Docker 官方源可能超时,若下载失败,可配置国内镜像加速器,但需注意镜像源是否支持 ARM64 架构。
  • 权限问题:运行 docker 命令需 sudo 或将用户加入 docker 组,否则报 permission denied。

常见问题

甲骨文 ARM 实例能稳定运行 Docker 吗?

可以稳定运行。Docker 官方已正式支持 Linux ARM64 架构,主流镜像均提供 multi-arch 支持。

安装脚本报错 curl: command not found 怎么办?

先安装 curl 工具。Ubuntu 执行 sudo apt-get update && sudo apt-get install curl -y,Oracle Linux 执行 sudo yum install curl -y。

为什么 docker run 拉取镜像慢或失败?

这是网络连通性问题,非架构问题。可配置 Docker daemon.json 添加 registry-mirrors,或检查 VPS outbound 网络策略。

参考来源

  • Docker Official Documentation, Install Docker Engine, https://docs.docker.com/engine/install/
  • Oracle Cloud Infrastructure Documentation, Compute Shapes, https://docs.oracle.com/en-us/iaas/Content/Compute/References/computeshapes.htm