在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:
核心原因
- 镜像与SSH用户不匹配:Docker Machine的
amazonec2驱动默认创建Ubuntu实例,并用ubuntu用户登录,但你本地使用的是Amazon Linux 2,未指定对应配置会导致安装脚本适配失败。 - Docker Machine版本过旧:你使用的v0.16.0版本发布于2019年,对新版Linux发行版(如Amazon Linux 2)的Docker安装支持存在兼容性问题。
- 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:RunInstancesec2:DescribeInstancesec2:CreateKeyPairec2:CreateSecurityGroupec2:AuthorizeSecurityGroupIngressec2:TerminateInstances
内容的提问来源于stack exchange,提问作者Raymond
相关产品推荐
相关产品推荐

