"docker-machine rm" 在不存在的 EC2 实例上失败
"docker-machine rm" failing on non-existent EC2 instance
我使用 docker-machine 来管理 AWS 上的 Docker 个节点。今天尝试创建一个新节点,由于实例类型与指定AMI不兼容而失败:
docker-machine create --driver amazonec2 --amazonec2-instance-type t2.micro --amazonec2-ami ami-b4a015d4 certbot-config
Running pre-create checks...
Creating machine...
(certbot-config) Launching instance...
Error creating machine:
Error in driver during machine creation:
Error launching instance: InvalidParameterCombination: Virtualization type 'hvm' is required for instances of type 't2.micro'. Ensure that you are using an AMI with virtualization type 'hvm'. For more information, see http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/virtualization_types.html
不管怎样,我纠正错误。我的问题是我似乎创建了一个幽灵机器;如果我 运行 docker-machine ls,我得到这个:
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
certbot-config - amazonec2 Error Unknown MissingParameter: The request must contain the parameter InstanceId
status code: 400, request id:
我无法删除它、终止它、重新启动它或配置它;每个命令退出时都会出现来自 AWS 驱动程序的 400 错误:
~$ docker-machine rm certbot-config
About to remove certbot-config
Are you sure? (y/n): y
Error removing host "certbot-config": unknown instance
MissingParameter: The request must contain the parameter KeyName
status code: 400, request id:
如何清除这个悬空实例?我在 docker-machine 下有很多实例 运行ning,所以我宁愿不做任何激烈的事情,比如重新安装。
编辑:
也许还有另一种表达方式:docker-machine 在哪里跟踪托管主机?大概在我的计算机中某处有一个包含主机列表的文件,当我 运行 "docker-machine ls" 时,它会在该列表中向下移动并 ping 以获取状态。这个文件在哪里,我可以安全地删除我知道已经死掉的主机而不在其他地方留下垃圾吗?
Perhaps another way to frame this: where is docker-machine keeping track of managed hosts?
检查是否有环境变量MACHINE_STORAGE_PATH
。
如果不是,那些 VMS 应该在 ~/.docker
.
你也可以看到未解决的issue 3555:
Using docker-machine to provision a spot instance opens a spot request and waits for it to be fulfilled. If this fails, docker-machine
exits but the spot request remains open and may be fulfilled later. This results in a dangling spot request with an active instance.
在 issue 226 中讨论了 docker-machine
的 Spot 实例支持。
From Spot Request, the main additional parameters seem to be Bid
, Request valid From/To
and Persistent request
.
In the context of machine, I guess you could set request valid to = now + 2 minutes
or so, at which point the command could fail.
添加支持的 PR 为 PR 942 and PR 1000。
docker-machine rm 可能没有充分 find/provide spot 实例期望的额外参数。
除了从~/.docker/machine/machines中移除对应的目录,还需要从AWS EC2控制台移除对应的EC2密钥对。
我也刚打了这个,用docker-machine rm -f [name]
删除了本地引用。
但是,这留下了一个密钥对(在 EC2 -> AWS 控制台中的密钥对下)。我手动删除了那个。
我使用 docker-machine 来管理 AWS 上的 Docker 个节点。今天尝试创建一个新节点,由于实例类型与指定AMI不兼容而失败:
docker-machine create --driver amazonec2 --amazonec2-instance-type t2.micro --amazonec2-ami ami-b4a015d4 certbot-config
Running pre-create checks...
Creating machine...
(certbot-config) Launching instance...
Error creating machine:
Error in driver during machine creation:
Error launching instance: InvalidParameterCombination: Virtualization type 'hvm' is required for instances of type 't2.micro'. Ensure that you are using an AMI with virtualization type 'hvm'. For more information, see http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/virtualization_types.html
不管怎样,我纠正错误。我的问题是我似乎创建了一个幽灵机器;如果我 运行 docker-machine ls,我得到这个:
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
certbot-config - amazonec2 Error Unknown MissingParameter: The request must contain the parameter InstanceId
status code: 400, request id:
我无法删除它、终止它、重新启动它或配置它;每个命令退出时都会出现来自 AWS 驱动程序的 400 错误:
~$ docker-machine rm certbot-config
About to remove certbot-config
Are you sure? (y/n): y
Error removing host "certbot-config": unknown instance
MissingParameter: The request must contain the parameter KeyName
status code: 400, request id:
如何清除这个悬空实例?我在 docker-machine 下有很多实例 运行ning,所以我宁愿不做任何激烈的事情,比如重新安装。
编辑:
也许还有另一种表达方式:docker-machine 在哪里跟踪托管主机?大概在我的计算机中某处有一个包含主机列表的文件,当我 运行 "docker-machine ls" 时,它会在该列表中向下移动并 ping 以获取状态。这个文件在哪里,我可以安全地删除我知道已经死掉的主机而不在其他地方留下垃圾吗?
Perhaps another way to frame this: where is docker-machine keeping track of managed hosts?
检查是否有环境变量MACHINE_STORAGE_PATH
。
如果不是,那些 VMS 应该在 ~/.docker
.
你也可以看到未解决的issue 3555:
Using docker-machine to provision a spot instance opens a spot request and waits for it to be fulfilled. If this fails,
docker-machine
exits but the spot request remains open and may be fulfilled later. This results in a dangling spot request with an active instance.
在 issue 226 中讨论了 docker-machine
的 Spot 实例支持。
From Spot Request, the main additional parameters seem to be
Bid
,Request valid From/To
andPersistent request
.
In the context of machine, I guess you could set
request valid to = now + 2 minutes
or so, at which point the command could fail.
添加支持的 PR 为 PR 942 and PR 1000。
docker-machine rm 可能没有充分 find/provide spot 实例期望的额外参数。
除了从~/.docker/machine/machines中移除对应的目录,还需要从AWS EC2控制台移除对应的EC2密钥对。
我也刚打了这个,用docker-machine rm -f [name]
删除了本地引用。
但是,这留下了一个密钥对(在 EC2 -> AWS 控制台中的密钥对下)。我手动删除了那个。