You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在AWS EC2上安装Docker并创建实例节点时出现错误

解决Docker Machine在AWS EC2创建节点时的Docker安装错误

问题重现

在Amazon Linux 2的EC2实例上执行docker-machine create --driver amazonec2 aws-node1时,触发如下错误:

Running pre-create checks...
Creating machine...
(aws-node1) Launching instance...
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...
Detecting the provisioner...
Provisioning with ubuntu(systemd)...
Installing Docker...
Error creating machine: Error running provisioning: error installing docker:

核心原因

  1. 镜像与SSH用户不匹配:Docker Machine的amazonec2驱动默认创建Ubuntu实例,并用ubuntu用户登录,但你本地使用的是Amazon Linux 2,未指定对应配置会导致安装脚本适配失败。
  2. Docker Machine版本过旧:你使用的v0.16.0版本发布于2019年,对新版Linux发行版(如Amazon Linux 2)的Docker安装支持存在兼容性问题。
  3. IAM权限不足:若AWS Access Key对应的IAM用户缺少EC2实例创建、安全组配置等核心权限,会中断安装流程。

解决方案

1. 指定Amazon Linux 2的AMI和SSH用户

执行创建命令时,明确指定ap-northeast-2区域的Amazon Linux 2 AMI及默认SSH用户ec2-user:

docker-machine create \
  --driver amazonec2 \
  --amazonec2-ami ami-0c7217cdde317cfec \ # 替换为该区域最新的Amazon Linux 2 AMI ID
  --amazonec2-ssh-user ec2-user \
  aws-node1

注:可通过AWS控制台或aws ec2 describe-images --filters "Name=name,Values=amzn2-ami-hvm-*-x86_64-gp2" --region ap-northeast-2命令获取最新AMI ID。

2. 升级Docker Machine版本

旧版本兼容性差,建议升级到最后一个官方维护版本v0.16.2:

base=https://github.com/docker/machine/releases/download/v0.16.2 && \
curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine && \
sudo install /tmp/docker-machine /usr/local/bin/docker-machine

3. 指定Docker安装源或版本

强制使用官方Docker安装脚本,避免旧脚本的适配问题:

docker-machine create \
  --driver amazonec2 \
  --engine-install-url "https://get.docker.com" \
  aws-node1

若需指定特定Docker版本:

docker-machine create \
  --driver amazonec2 \
  --engine-version "20.10.24" \
  aws-node1

4. 验证IAM权限

确保你的AWS Access Key对应的IAM用户拥有以下核心权限(可临时附加AmazonEC2FullAccess策略测试,后续按需收窄):

  • ec2:RunInstances
  • ec2:DescribeInstances
  • ec2:CreateKeyPair
  • ec2:CreateSecurityGroup
  • ec2:AuthorizeSecurityGroupIngress
  • ec2:TerminateInstances

内容的提问来源于stack exchange,提问作者Raymond

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 03:51:36