2016-12-22 7 views
4

Я использую докер-машину для управления узлами докеров на AWS. Сегодня я попытался создать новый узел и не удалось из-за несовместимости между типом экземпляра и конкретизированы AMI:«docker-machine rm» не работает на несуществующем экземпляре EC2

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 

Безотносительно, я исправить ошибку. Моя проблема в том, что я, похоже, создал призрачную машину; если я бегу 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: 

Я не могу удалить его, убить его, перезапустить его, или предоставление его; каждая команда выходит с ошибкой 400 от драйвера 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: 

Как я могу удалить этот оборванный экземпляр? У меня много экземпляров, работающих под докер-машиной, поэтому я бы предпочел не делать ничего решительного, как переустановка.

Edit:

Возможно, еще один способ сформулировать следующим образом: где, сохраняя докер-машина трек управляемых хостов? Предположительно, есть файл где-то на моем компьютере со списком хостов, и когда я запускаю «docker-machine ls», он переходит в этот список и записывает статус. Где этот файл, и могу ли я безопасно удалить хосты, которые, как я знаю, мертвы, не оставляя мусор в другом месте?

+0

Три дня спустя, и все еще возникает, когда я запускаю docker-machine ls'. Хотелось бы избавиться от него. – nrlakin

ответ

4

Возможно, это еще один способ создать это: где находится докер-машина, отслеживающая управляемые хосты?

Проверьте, есть ли у вас переменная окружения MACHINE_STORAGE_PATH.

Если нет, то эти VMS должны быть в ~/.docker.

Вы можете увидеть также нерешенностью issue 3555:

Использование Докер-машины для предоставления spot instance открывает запрос на пятно и ждет, чтобы это было выполнено. Если это не удается, docker-machine выходит, но запрос на место остается открытым и может быть выполнен позже. Это приводит к зависанию запроса пятна с активным экземпляром.

Поддержка экземпляра Spot обсуждалась для docker-machine в issue 226.

С Spot Request, основные дополнительные параметры, как представляется, Bid, Request valid From/To и Persistent request.

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

В контексте машины, я думаю, вы могли бы установить request valid to = now + 2 minutes или около того, в какой момент команда может потерпеть неудачу.

PR добавочный носитель был PR 942 и PR 1000.
Возможно, что док-машина rm не находит/предоставляет дополнительные параметры, которые ожидает случай пятна.

В дополнение к удалению соответствующего каталога из ~/.docker/machine/machines вам необходимо удалить соответствующую пару ключей EC2 с консоли AWS EC2.

+0

Это не запрос пятна, хотя я ожидаю, что механики схожи - экземпляр никогда не вращался, и теперь машина висит. Я могу видеть каталог в ~/.docker с помощью ключей config json и RSA. Безопасно ли удалить каталог этого компьютера? Оставит ли он мусор в другом месте? – nrlakin

+1

@nrlakin он не должен оставлять мусор в другом месте и должен позволить вашей локальной докер-машине больше не перечислить этот экземпляр. – VonC

+0

Работы, спасибо. – nrlakin

2

Я просто ударил это также, и используя docker-machine rm -f [name] удалил местную ссылку.

Однако это оставило ключевую пару, висящую вокруг (под EC2 -> Key Pair в консоли AWS). Я удалил это вручную.