"Docker-machine rm" che non è in grado di esistere EC2 inesistente

Utilizzo docker-machine per gestire i nodes Docker su AWS. Oggi ho cercato di creare un nuovo nodo e non sono riuscito a causa di un'incompatibilità tra il tipo di istanza e l'AMI specificato:

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 

Qualunque cosa, correggo l'errore. Il mio problema è che sembro aver creato una macchina fantasma; se ho eseguito la macchina da banco, ho questo:

 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: 

Non posso rimuoverlo, ucciderlo, riavviarlo o fornirlo; each command esce con un errore 400 del driver AWS:

 ~$ 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: 

Come posso cancellare questa istantanea? Ho molte istanze in esecuzione sotto docker-machine, quindi preferisco non fare niente di drastico, come la reinstallazione.

Edit:

Forse un altro modo per inquadrare questo aspetto: where è il docker-machine tenere traccia degli host gestiti? Presumibilmente c'è un file da qualche parte nel mio computer con un elenco di host, e quando eseguo "docker-machine ls" scende quell'elenco e ping per lo stato. Dov'è questo file, e posso cancellare in modo sicuro gli host che so di essere morto senza lasciare spazzatura altrove?

Forse un altro modo per inquadrare questo aspetto: where è il docker-machine tenere traccia degli host gestiti?

Verifica se hai una variabile di ambiente MACHINE_STORAGE_PATH .

Altrimenti, questi VMS dovrebbero essere in ~/.docker .

Potete anche vedere l' argomento non risolto 3555 :

L'utilizzo di docker-machine per fornire un'istanza a punti apre una richiesta spot e attende che venga soddisfatta. Se ciò non riesce, la docker-machine esce ma la richiesta spot rimane aperta e può essere soddisfatta in seguito. Ciò comport una richiesta di dangling spot con un'istanza triggers.

Il supporto dell'istanza Spot è stato discusso per il docker-machine nel numero 226 .

Dalla Richiesta Spot , i principali parametri aggiuntivi sembrano essere Bid , Request valid From/To e Persistent request .

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

Nel context della macchina, immagino che potresti impostare la request valid to = now + 2 minutes o giù di lì, a quel punto il command potrebbe fallire.

Il PR che aggiunge il supporto è stato PR 942 e PR 1000 .
È ansible che rm docker-machine non trovi / fornisca adeguatamente i parametri aggiuntivi che un'istanza punto aspetta.

Oltre alla rimozione della directory corrispondente da ~ / .docker / machine / machines, è necessario rimuovere la corrispondente coppia EC2 dalla console AWS EC2.