我使用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下运行的实例,所以我宁愿不做任何激烈的事情,比如重新安装。
编辑:
也许另一种方式来构建这个:docker-machine在哪里跟踪托管主机?据推测,我的计算机中有一个文件,其中有一个主机列表,当我运行时,#dock; docker-machine ls"它列出了该列表并ping状态。这个文件在哪里,我可以安全地删除我知道死的主机,而不会在其他地方留下垃圾吗?
答案 0 :(得分:4)
也许另一种方式来构建这个:docker-machine在哪里跟踪托管主机?
检查您是否有环境变量MACHINE_STORAGE_PATH
。
如果没有,那些VMS应该在~/.docker
。
您还可以看到未解析的issue 3555:
使用docker-machine配置 spot instance 会打开一个现场请求并等待其完成。如果失败,
docker-machine
退出,但现场请求仍然保持打开状态,可能会在以后完成。这会导致带有活动实例的悬空点请求。
issue 226中docker-machine
讨论了竞价型实例支持。
从Spot Request开始,主要的附加参数似乎是
Bid
,Request valid From/To
和Persistent request
。
在机器的上下文中,我猜你可以设置
request valid to = now + 2 minutes
左右,此时命令可能会失败。
添加支持的PR为PR 942和PR 1000 docker-machine rm可能无法充分找到/提供spot实例所期望的额外参数。
除了从〜/ .docker / machine / machines中删除相应的目录外,您还需要从AWS EC2控制台中删除相应的EC2密钥对。
答案 1 :(得分:3)
我也点了这个,并使用docker-machine rm -f [name]
删除了本地参考。
然而,这留下了一个密钥对(在AWS控制台的EC2 - >密钥对下)。我手动删除了它。