“docker-machine rm”在不存在的EC2实例上失败

我使用docker-machine来pipe理AWS上的Docker节点。 今天,我尝试创build一个新的节点,并且由于实例types和指定的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机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下运行的实例,所以我宁愿不做任何激烈的事情,比如重新安装。

编辑:

也许另一种方式来构造这个:docker机在哪里跟踪托pipe主机? 据推测,在我的电脑中有一个文件的主机列表,当我运行“docker-machine ls”时,它会在列表中显示并显示状态。 这个文件在哪里,我可以安全地删除我知道死的主机而不会在其他地方留下垃圾吗?

也许另一种方式来构造这个:docker机在哪里跟踪托pipe主机?

检查你是否有一个环境variablesMACHINE_STORAGE_PATH

否则,那些VMS应该在~/.docker

您还可以看到未解决的问题3555 :

使用docker-machine来configuration一个现货实例会打开一个现货请求,并等待它实现。 如果失败, docker-machine退出,但现场请求保持打开状态,稍后可能会被执行。 这会导致一个带有活动实例的悬挂点请求。

在问题226中讨论了docker-machine Spot实例支持。

Bid 请求 ,主要的附加参数似乎是BidRequest valid From/ToPersistent request

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/images/spot_introduction.png

在机器的上下文中,我猜你可以设置request valid to = now + 2 minutes左右,此时命令可能会失败。

增加支持的PR是PR 942和PR 1000 。
docker-machine rm可能没有充分地find/提供一个现场实例期望的额外参数。

除了从〜/ .docker / machine / machines中删除相应的目录之外,还需要从AWS EC2控制台中删除相应的EC2密钥对。

我只是打这个,并使用docker-machine rm -f [name]删除本地参考。

但是,这留下了一个密钥对(在AWS控制台中的EC2 – >密钥对下)。 我手动删除。