Machine: Драйвер Azure - версия диспетчера ресурсов

Созданный на 5 янв. 2016  ·  69Комментарии  ·  Источник: docker/machine

Думаю, я прав, говоря, что текущая поддержка docker-machine в Azure использует классическую модель развертывания. Было бы здорово также поддержать модель Resource Manager (поскольку это то, что MS рекомендует для новых развертываний).

driveazure kinenhancement

Все 69 Комментарий

: +1:

+1

+1

Планируется переместить поставщика докер-машины Azure для использования Azure Resource Manager - см. № 496.

@lizrice В настоящее время я активно

Отличные новости @ahmetalpbalkan :-)

+1

Это будет очень полезно! Спасибо за активную работу над этим.

Однозначно нужно это. Также необходимо отказаться от использования сертификатов для проверки подлинности, если только не используется субъект службы Azure Active Directory. Есть ли прогресс @ahmetalpbalkan?

Привет,
Тревор Салливан

@ pcgeek86, мы не будем заниматься этой "azure login" ). Каждые 2 недели вам будет предложено открыть окно браузера и нажать кнопку, чтобы авторизовать приложение.

@ahmetalpbalkan Отлично, значит, у вас тоже будет параметр --username , например azure-clil?

@ pcgeek86 , нет. Azure CLI не требует параметра имени пользователя. Это сделано для обратной совместимости.

@ahmetalpbalkan Я не сказал "требуется". Параметр --username позволяет указать имя пользователя Azure Active Directory (AAD). Как это "обратная совместимость"? Что вы предлагаете для окончательной реализации?

Проверка подлинности на основе сертификата управления службами Azure (ASM) - это «обратная совместимость».

@ pcgeek86 хм, я никогда не понимал, что он используется для имен пользователей AAD. Когда вы переходите на https://aka.ms/devicelogin , позволяет ли он указать там свое имя пользователя AAD? Если ту же задачу можно выполнить без azure login (без --username ), я намерен оставить это так.

@ahmetalpbalkan Вам, вероятно, нужно быть в режиме ARM ( azure config arm ), чтобы использовать аутентификацию AAD с ARM. Я не очень часто использую "режим" ASM.

Да, вы можете использовать имя пользователя AAD с https://aka.ms/devicelogin. Однако я предпочитаю избегать использования браузера и вместо этого указывать имя пользователя с помощью --username . Лучше работает в сценариях только с текстом. :)

Если ту же задачу можно выполнить без входа в Azure (без --username), я намерен оставить ее в таком виде.

Итак, просто чтобы убедиться, что я правильно понимаю, собираетесь ли вы потребовать от пользователя использовать веб-браузер для завершения аутентификации вместо ввода пароля в командной строке?

С учетной записью, для которой требуется 2fa, вам все равно придется авторизоваться. Я не понимаю, что это большая часть оптимизации для случая 2fa.

@squillace Конечно, для пользователей с многофакторной аутентификацией. Но зачем обслуживать только одну группу пользователей? Я предполагаю, что большинство в любом случае не будет использовать MFA.

В этот момент это только усложняет задачу для всех, и разве вы не собираетесь разозлить людей, заставляя их использовать веб-браузер для аутентификации инструмента командной строки?

На самом деле, почему бы не пойти дальше и как-нибудь не поддержать MFA из командной строки?

Вам не следует собирать имена пользователей и пароли за пределами обычного экрана входа в AAD. Это небезопасная и плохая практика. Кроме того, технически существует слишком много сценариев, которые нужно охватить, чтобы это действительно сработало. 2FA невозможно без открытия браузера, например, на предварительном ADFS, безопасном брелке, аутентификации по смарт-карте и т. Д.

Я не хочу обслуживать только одну группу, скорее, базовый сценарий должен охватывать все.

Отправлено из Outlook Мо желчью https://aka.ms/blhgte

25 февраля 2016 г. в 10:11 -0800 «Тревор Салливан» < [email protected] [email protected] > написал:

@squil lacehttps: //github.com/squillace Конечно, для пользователей с многофакторной аутентификацией. Но зачем обслуживать только одну группу пользователей? Я предполагаю, что большинство в любом случае не будет использовать MFA.

Ответьте на это письмо напрямую или просмотрите его на Gi tHubhttps: //github.com/docker/machine/issues/2742#issuecomment -188910314.

@LoungeFlyZ Так вы говорите, что azure xPlat CLI должен удалить свой параметр --username ? Это было бы существенное изменение, но, вероятно, возможно.

Да наверно. Я удивлен, что он до сих пор есть ... но я понимаю почему.

@LoungeFlyZ А как насчет пользователей командной строки? Как вы думаете, это им навредит?

@ pcgeek86 Да, конечно. Я так понимаю, это менее удобно. Но иметь какой-либо инструмент для сбора вашего имени пользователя и пароля - это ожидающая катастрофа.

@LoungeFlyZ Я тоже с

@ pcgeek86 Я отправляю на вашу электронную почту двоичный файл, попробуйте его и lmk, если вы сочтете это непрактичным.

Привет, ребята, мы наконец-то близки к выпуску нового драйвера Azure. Мы дорабатываем несколько вещей, и очень скоро я отправлю запрос на перенос. А пока вы можете опробовать новую версию до ее выхода и оставить отзыв. Загрузите ниже:

пробовать дарвин сейчас .. чистый. Ницца.

Ахмет, очень, очень чисто.

~ / workspace / ahmet-machine ‹ruby-2.2.1› $ ld create -d azure \ 1 ↵
--azure-подписка-идентификатор\
--azure-ssh-user ops \
--azure-resource-group ahmetsmachine \
--azure-location eastus \
ахметмашина
Выполнение предварительных проверок ...
(ahmetsmachine) Microsoft Azure: для входа в систему откройте страницу https://aka.ms/devicelogin в веб-браузере для аутентификации.
(ahmetsmachine) Завершены предварительные проверки станка.
Создание машины ...
(ahmetsmachine) Запрос существующей группы ресурсов ... name = "ahmetsmachine"
(ahmetsmachine) Создание группы ресурсов ... location = "eastus" name = "ahmetsmachine"
(ahmetsmachine) Создание группы доступности ... name = "docker-machine"
(ahmetsmachine) Создание группы безопасности сети ... name = "ahmetsmachine-firewall" location = "eastus"
(ahmetsmachine) Запрос, существует ли уже виртуальная сеть ... name = "docker-machine-vnet" location = "eastus"
(ahmetsmachine) Создание подсети ... cidr = "" name = "docker-machine" vnet = "docker-machine-vnet"
(ahmetsmachine) Создание общедоступного IP-адреса ... name = "ahmetsmachine-ip"
(ahmetsmachine) Создание сетевого интерфейса ... name = "ahmetsmachine-nic"
(ahmetsmachine) Создание учетной записи хранения "" в eastus
(ahmetsmachine) Создание виртуальной машины ... name = "ahmetsmachine" location = "eastus" size = "Standard_A2" username = "ops" osImage = " canonical: UbuntuServer : 14.04.3- LTS: latest "
Ожидание запуска машины, это может занять несколько минут ...
Обнаружение операционной системы созданного экземпляра ...
Ожидание доступности SSH ...
Обнаружение инициатора ...
Подготовка с помощью ubuntu (выскочка) ...
Установка Docker ...
Копирование сертификатов в каталог локального компьютера ...
Копирование сертификатов на удаленную машину ...
Настройка конфигурации Docker на удаленном демоне ...
Проверка подключения к Docker ...
Докер запущен и работает!
Чтобы узнать, как подключить Docker Client к Docker Engine, работающему на этой виртуальной машине, запустите:Докер-машина-Дарвин-x86_64 env ahmetsmachine

Сейчас попробую версии для Windows и Linux. Ницца. Информация пришла сразу. Мне также очень нравится ваше основное сетевое окружение и выбор портов. Благодаря!

В настоящее время есть проблема с Windows, он не аутентифицируется. Я предлагаю пока попробовать с другими платформами. Спасибо @squillace!

Хорошо, я займусь семейством debian.

Да, ошибка в Windows связана с копированием токена в кэш токенов. Отправил подробности на @ahmetalpbalkan сегодня вечером.

Привет,
Тревор Салливан

отлично работает на монетном дворе 17.3.

@ pcgeek86 попробуйте эту новую сборку для Windows: http://cl.ly/3k2d0g2B3j0o/docker_machine_azure_rc2.zip, проблема должна быть исправлена ​​сейчас. У меня это сработало. (Хотя это все еще нестабильно, мы скоро исправим их в Azure SDK и импортируем сюда. Я буду продолжать предоставлять сборки здесь по мере продвижения.)

Пожалуйста, попробуйте аутентификацию со всевозможными странными типами учетных записей (учетная запись Microsoft, AAD ...), если они у вас есть. Этот подход аутентификации работает как с моей многофакторной учетной записью AD, так и с моей личной учетной записью. Я ценю ваши отзывы об этом, я чувствую, что мы сможем исправить это с первой попытки! :улыбка:

Я не пробовал это с личным; Я сделаю это сейчас.

Я просто пробовал использовать двоичный файл ранее в этом выпуске для OS X и получил:

docker-machine-azure create -d azure --azure-location "North Europe"  --azure-resource-group "career-planner" --azure-subscription-id {ID} azure
Running pre-create checks...
(azure) Microsoft Azure: To sign in, use a web browser to open the page https://aka.ms/devicelogin. Enter the code DRHSTFLSD to authenticate.
(azure) Completed machine pre-create checks.
Creating machine...
(azure) Querying existing resource group...  name="career-planner"
(azure) Resource group "career-planner" already exists.
(azure) Creating availability set...  name="docker-machine"
(azure) Creating network security group...  name="azure-firewall" location="North Europe"
(azure) Querying if virtual network already exists...  name="docker-machine-vnet" location="North Europe"
(azure) Creating subnet...  name="docker-machine" vnet="docker-machine-vnet" cidr="192.168.0.0/16"
(azure) Creating public IP address...  name="azure-ip"
(azure) Creating network interface...  name="azure-nic"
(azure) Creating storage account "vhdsxfxg6xxswwqjih00e7co" in North Europe
(azure) Creating Virtual Machine...  name="azure" location="North Europe" size="Standard_A2" username="ubuntu" osImage="canonical:UbuntuServer:14.04.3-LTS:latest"
Waiting for machine to be running, this may take a few minutes...
Error creating machine: Error waiting for machine to be running: Maximum number of retries (60) exceeded

хотя я думаю, что он создал все ресурсы.

@buckett Спасибо, это последняя проблема, которую мы пытаемся решить в Azure Go SDK. В настоящее время мы не дожидаемся завершения созданных ресурсов.

Перед отправкой запроса на перенос в это репо я планирую создать около 1000 машин, чтобы убедиться, насколько он надежен. Мы уже знакомы с функциональными тестами, но есть некоторые нестыковки, как я упоминал ранее.

@buckett - это новый релиз с кучей исправлений. В настоящее время я начал его тестировать, и мне кажется, что все в порядке (до сих пор все сбои, которые у меня были, не были связаны с Azure, возможны проблемы с репозиториями и т. Д.).

Вот бинарный пакет для поддерживаемых платформ: ссылка http://cl.ly/fKvS

Надеюсь отправить пиар на машину с этой версией.

Я загрузил новую сборку и попытался посмотреть, какие у меня машины:

$ docker-machine-azure ls
(azure) Obtained access_token or refresh_token is stale. Please reauthenticate.
(azure) Microsoft Azure: To sign in, use a web browser to open the page https://aka.ms/devicelogin. Enter the code {removed} to authenticate.
NAME      ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER    ERRORS
azure              azure        Timeout                                                 
default   *        virtualbox   Running   tcp://192.168.99.101:2376           v1.10.0   

но затем, когда я попытался удалить устаревший экземпляр лазурного, меня попросили снова войти в систему:

$ docker-machine-azure rm azure
About to remove azure
Are you sure? (y/n): y
(azure) NOTICE: Please check Azure portal/CLI to make sure you have no leftover resources to avoid unexpected charges.
(azure) Microsoft Azure: To sign in, use a web browser to open the page https://aka.ms/devicelogin. Enter the code {removed} to authenticate.
(azure) Virtual Machine does not exist. Skipping.  name="azure"
(azure) Network Interface does not exist. Skipping.  name="azure-nic"
(azure) Public IP does not exist. Skipping.  name="azure-ip"
(azure) Network Security Group does not exist. Skipping.  name="azure-firewall"
(azure) Attempting to clean up Availability Set resource...  name="docker-machine"
(azure) Attempting to clean up Subnet resource...  name="docker-machine"
(azure) Attempting to clean up Virtual Network resource...  name="docker-machine-vnet"
Successfully removed azure

Когда я затем создал новый экземпляр Azure, он работал до определенного момента, а затем упал:

$ docker-machine-azure create -d azure ....
[..snipped..]
Error creating machine: Error in driver during machine creation: Panic in the driver: runtime error: invalid memory address or nil pointer dereference
goroutine 52 [running]:
runtime/debug.Stack(0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.6/libexec/src/runtime/debug/stack.go:24 +0x80
github.com/docker/machine/libmachine/drivers/rpc.(*StandardStack).Stack(0x2299078, 0x0, 0x0, 0x0)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/libmachine/drivers/rpc/server_driver.go:23 +0x29
github.com/docker/machine/libmachine/drivers/rpc.trapPanic(0xc82012ba28)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/libmachine/drivers/rpc/server_driver.go:129 +0x96
panic(0x11f78e0, 0xc82000a0f0)
    /usr/local/Cellar/go/1.6/libexec/src/runtime/panic.go:426 +0x4e9
github.com/docker/machine/drivers/azure/azureutil.osDiskStorageContainerURL(0xc820328780, 0xc8202c4468, 0x5, 0x0, 0x0)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/drivers/azure/azureutil/azureutil.go:709 +0x3d
github.com/docker/machine/drivers/azure/azureutil.osDiskStorageBlobURL(0xc820328780, 0xc8202c4468, 0x5, 0x0, 0x0)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/drivers/azure/azureutil/azureutil.go:697 +0x5c
github.com/docker/machine/drivers/azure/azureutil.AzureClient.CreateVirtualMachine(0x16c0590, 0x10, 0x17fb460, 0x20, 0x18ea160, 0x35, 0x17fb4e0, 0x24, 0x17627a0, 0x1d, ...)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/drivers/azure/azureutil/azureutil.go:446 +0x5f2
github.com/docker/machine/drivers/azure.(*Driver).Create.func10(0x0, 0x0)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/drivers/azure/azure.go:322 +0x20f
github.com/docker/machine/drivers/azure.(*Driver).Create(0xc8200c2a00, 0x0, 0x0)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/drivers/azure/azure.go:326 +0x461
github.com/docker/machine/libmachine/drivers/rpc.(*RPCServerDriver).Create(0xc82012d5a0, 0x2299078, 0x2299078, 0x0, 0x0)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/libmachine/drivers/rpc/server_driver.go:140 +0x7c
reflect.Value.call(0x108e980, 0x1518768, 0x13, 0x155ba18, 0x4, 0xc82012bed8, 0x3, 0x3, 0x0, 0x0, ...)
    /usr/local/Cellar/go/1.6/libexec/src/reflect/value.go:435 +0x120d
reflect.Value.Call(0x108e980, 0x1518768, 0x13, 0xc82012bed8, 0x3, 0x3, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.6/libexec/src/reflect/value.go:303 +0xb1
net/rpc.(*service).call(0xc82016a1c0, 0xc82012e000, 0xc820158fd0, 0xc820087880, 0xc82012dcc0, 0xd7d040, 0x2299078, 0x16, 0xd7d040, 0x2299078, ...)
    /usr/local/Cellar/go/1.6/libexec/src/net/rpc/server.go:383 +0x1c2
created by net/rpc.(*Server).ServeCodec
    /usr/local/Cellar/go/1.6/libexec/src/net/rpc/server.go:477 +0x49d

Удалив половину настройки докер-машины, почти все заработало. Все было удалено, кроме виртуальной сети и учетной записи хранения (проверив https://portal.azure.com).

@buckett argh , не могу поверить, что отправил ссылку на старую сборку. Прости за это. Не могли бы вы попробовать это: http://cl.ly/fKvS

Виртуальная машина @buckett должна быть удалена (если бы вы могли воспроизвести чистую группу ресурсов с помощью docker-machine --debug rm это было бы здорово), но учетная запись хранения не будет удалена. Это бесплатно, и мы также очищаем диски ОС, которые выделяются при удалении.

Пробовал новую сборку: просто удалял машину, и на полпути я получил:

Error removing host "azure": azure.ServicePrincipalToken:WithAuthorization 0 Failed to refresh Service Principal Token for request to https://management.azure.com/subscriptions/fb56de48-cb6e-4d0b-8626-8faa062ada02/providers/Microsoft.Network/locations/northeurope/operations/33643d7c-82cc-40f4-8724-bd82de215338?api-version=2015-06-15 -- Original Error: Manually created ServicePrincipalToken does not contain secret material to retrieve a new access token.

Таймаут новой сборки на docker-machine ls для вставки в токен аутентификации слишком мал, так как мне не удается открыть браузер, скопировать и вставить токен аутентификации и щелкнуть, чтобы принять его, войдите в правильный аккаунт и примите разрешения.

И когда мой ноутбук не приостанавливается на полпути создания машины, он создает новый хост, на котором запущен докер (волшебство, спасибо,: cake :). У меня возникла ошибка при создании, но я смог запустить hello-world после создания

Checking connection to Docker...
Error creating machine: Error checking the host: Error checking and/or regenerating the certs: There was an error validating certificates for host "13.69.192.88:2376": tls: DialWithDialer timed out
You can attempt to regenerate them using 'docker-machine regenerate-certs [name]'.
Be advised that this will trigger a Docker daemon restart which will stop running containers.

$ eval $(docker-machine-azure env azure)
$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
03f4658f8b78: Pull complete 
a3ed95caeb02: Pull complete 
Digest: sha256:8be990ef2aeb16dbcb9271ddfe2610fa6658d13f6dfb8bc72074cc1ca36966a7
Status: Downloaded newer image for hello-world:latest

Hello from Docker.
This message shows that your installation appears to be working correctly.

После успешного запуска контейнера hello-world я также регенерировал сертификаты, и это сработало.

В чистой группе ресурсов удаление последней машины, на которой запущен докер, не приводит к очистке сети (хотя это выглядит попыткой):

(azure) Attempting to clean up Virtual Network resource...  name="docker-machine-vnet"
(azure) DBG | Azure request  method="GET" request="https://management.azure.com/subscriptions/fb56de48-cb6e-4d0b-8626-8faa062ada02/resourceGroups/test/providers/Microsoft.Network/virtualnetworks/docker-machine-vnet?api-version=2015-06-15"
(azure) DBG | Azure response  status="200 OK" method="GET" request="https://management.azure.com/subscriptions/fb56de48-cb6e-4d0b-8626-8faa062ada02/resourceGroups/test/providers/Microsoft.Network/virtualnetworks/docker-machine-vnet?api-version=2015-06-15" x-ms-request-id="626af1d8-3f4b-4915-9a8a-f7a0d4844c53"
(azure) DBG | Azure response  request="https://management.azure.com/subscriptions/fb56de48-cb6e-4d0b-8626-8faa062ada02/resourceGroups/test/providers/Microsoft.Network/virtualnetworks/docker-machine-vnet?api-version=2015-06-15" x-ms-request-id="626af1d8-3f4b-4915-9a8a-f7a0d4844c53" status="200 OK" method="GET"
(azure) DBG | Virtual Network does not have any attached dependent resource.  name="docker-machine-vnet"
(azure) Removing Virtual Network resource...  name="docker-machine-vnet"
(azure) DBG | Azure request  method="DELETE" request="https://management.azure.com/subscriptions/fb56de48-cb6e-4d0b-8626-8faa062ada02/resourceGroups/test/providers/Microsoft.Compute/virtualMachines/docker-machine-vnet?api-version=2015-06-15"
(azure) DBG | Azure response  status="204 No Content" method="DELETE" request="https://management.azure.com/subscriptions/fb56de48-cb6e-4d0b-8626-8faa062ada02/resourceGroups/test/providers/Microsoft.Compute/virtualMachines/docker-machine-vnet?api-version=2015-06-15" x-ms-request-id="8799a451-211e-4f7d-a9d7-52b2e702c5f5"
(azure) DBG | Azure response  status="204 No Content" method="DELETE" request="https://management.azure.com/subscriptions/fb56de48-cb6e-4d0b-8626-8faa062ada02/resourceGroups/test/providers/Microsoft.Compute/virtualMachines/docker-machine-vnet?api-version=2015-06-15" x-ms-request-id="8799a451-211e-4f7d-a9d7-52b2e702c5f5"

В Mac OS X все начиналось хорошо. Затем произошло следующее:

(azdh) Creating Virtual Machine...  name="azdh" location="westeurope" size="Standard_A2" username="ubuntu" osImage="canonical:UbuntuServer:14.04.3-LTS:latest"
Error creating machine: Error in driver during machine creation: Panic in the driver: runtime error: invalid memory address or nil pointer dereference
goroutine 90 [running]:

Вот полный журнал:

Trevors-MBP:bin trevorsullivan$ ./docker-machine-Darwin-x86_64 create --driver azure --azure-location westeurope --azure-subscription-id 1c9fd9f5-a2dc-4cc9-a73c-cab0ee4a95a1 --azure-resource-group CloudAcademyAutomation azdh
Running pre-create checks...
(azdh) Microsoft Azure: To sign in, use a web browser to open the page https://aka.ms/devicelogin. Enter the code EDPKYDZ2X to authenticate.
(azdh) Completed machine pre-create checks.
Creating machine...
(azdh) Querying existing resource group...  name="CloudAcademyAutomation"
(azdh) Resource group "CloudAcademyAutomation" already exists.
(azdh) Creating availability set...  name="docker-machine"
(azdh) Creating network security group...  name="azdh-firewall" location="westeurope"
(azdh) Querying if virtual network already exists...  location="westeurope" name="docker-machine-vnet"
(azdh) Creating subnet...  name="docker-machine" vnet="docker-machine-vnet" cidr="192.168.0.0/16"
(azdh) Creating public IP address...  name="azdh-ip"
(azdh) Creating network interface...  name="azdh-nic"
(azdh) Creating storage account "vhdsxej59xu1xauhx7kaqs2e" in westeurope
(azdh) Creating Virtual Machine...  name="azdh" location="westeurope" size="Standard_A2" username="ubuntu" osImage="canonical:UbuntuServer:14.04.3-LTS:latest"
Error creating machine: Error in driver during machine creation: Panic in the driver: runtime error: invalid memory address or nil pointer dereference
goroutine 90 [running]:
runtime/debug.Stack(0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.6/libexec/src/runtime/debug/stack.go:24 +0x80
github.com/docker/machine/libmachine/drivers/rpc.(*StandardStack).Stack(0x2299078, 0x0, 0x0, 0x0)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/libmachine/drivers/rpc/server_driver.go:23 +0x29
github.com/docker/machine/libmachine/drivers/rpc.trapPanic(0xc8204a3a38)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/libmachine/drivers/rpc/server_driver.go:129 +0x96
panic(0x11f78e0, 0xc82000a0b0)
    /usr/local/Cellar/go/1.6/libexec/src/runtime/panic.go:426 +0x4e9
github.com/docker/machine/drivers/azure/azureutil.osDiskStorageContainerURL(0xc82025db80, 0xc8204d0118, 0x4, 0x0, 0x0)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/drivers/azure/azureutil/azureutil.go:709 +0x3d
github.com/docker/machine/drivers/azure/azureutil.osDiskStorageBlobURL(0xc82025db80, 0xc8204d0118, 0x4, 0x0, 0x0)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/drivers/azure/azureutil/azureutil.go:697 +0x5c
github.com/docker/machine/drivers/azure/azureutil.AzureClient.CreateVirtualMachine(0x16c0590, 0x10, 0x17fb460, 0x20, 0x18ea160, 0x35, 0x17fb4e0, 0x24, 0x17627a0, 0x1d, ...)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/drivers/azure/azureutil/azureutil.go:446 +0x5f2
github.com/docker/machine/drivers/azure.(*Driver).Create.func10(0x0, 0x0)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/drivers/azure/azure.go:322 +0x20f
github.com/docker/machine/drivers/azure.(*Driver).Create(0xc8200d0a00, 0x0, 0x0)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/drivers/azure/azure.go:326 +0x461
github.com/docker/machine/libmachine/drivers/rpc.(*RPCServerDriver).Create(0xc82012eec0, 0x2299078, 0x2299078, 0x0, 0x0)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/libmachine/drivers/rpc/server_driver.go:140 +0x7c
reflect.Value.call(0x108e980, 0x1518768, 0x13, 0x155ba18, 0x4, 0xc8204a3ee8, 0x3, 0x3, 0x0, 0x0, ...)
    /usr/local/Cellar/go/1.6/libexec/src/reflect/value.go:435 +0x120d
reflect.Value.Call(0x108e980, 0x1518768, 0x13, 0xc8204a3ee8, 0x3, 0x3, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.6/libexec/src/reflect/value.go:303 +0xb1
net/rpc.(*service).call(0xc82012d5c0, 0xc820013e00, 0xc820212070, 0xc820091880, 0xc82020e6a0, 0xd7d040, 0x2299078, 0x16, 0xd7d040, 0x2299078, ...)
    /usr/local/Cellar/go/1.6/libexec/src/net/rpc/server.go:383 +0x1c2
created by net/rpc.(*Server).ServeCodec
    /usr/local/Cellar/go/1.6/libexec/src/net/rpc/server.go:477 +0x49d

Привет,
Тревор Салливан

@ pcgeek86 похоже, что вы используете двоичные файлы rc3, которые я отправил ранее? Не могли бы вы попробовать rc4?

@ahmetalpbalkan На этот раз работал над созданием узла Docker в Azure. Попробую развернуть на него образ.

@buckett, вы правы, авторизация в команде ls будет проблемой, так как время ожидания истекает, пока мы запрашиваем авторизацию. В настоящее время у меня нет решения для этого, но я думаю, что это не будет иметь большого значения, оно работает в create / rm . Я отлажу проблему виртуальной сети. Спасибо за сообщение.

@ pcgeek86 спасибо за попытку.

@buckett, было бы интересно посмотреть, есть ли разница между периодом тайм-аута с этой докер-машиной и Azure CLI. Я посмотрю об этом завтра.

@squillace эти двое не связаны. В ls командная машина ожидает, что драйвер ответит в течение 10 секунд или около того, если вы не можете пройти аутентификацию в течение короткого периода времени, произойдет таймаут.

Ах, хорошо. Это довольно быстро, если вы нажмете момент авторизации.

@buckett из ваших выходных данных Я понял, что мы пытались удалить виртуальную машину вместо виртуальной сети при очистке виртуальной сети :) Я исправил это сейчас. В более новых сборках этой проблемы не будет. Спасибо, что заметили и сообщили!

docker-machine ssh {machine} похоже, имеет хороший долгий таймаут, поэтому, если срок действия токена аутентификации истекает, я просто обновлял его, просто установив соединение ssh, а затем у меня есть его, чтобы использовать в течение нескольких часов.

@ahmetalpbalkan Когда вы освобождаете ( docker-machine выдает ошибку .

Trevors-MBP:bin 3 trevorsullivan$ ./docker-mac ls
(azdh) PowerState "deallocated" does not map to a docker-machine state.
(azdh) PowerState "deallocated" does not map to a docker-machine state.
NAME         ACTIVE   DRIVER         STATE     URL                         SWARM   DOCKER    ERRORS
azdh         -        azure                                                        Unknown
dh           -        vmwarefusion   Running   tcp://172.16.217.129:2376           v1.10.2
dockerhost   -        virtualbox     Stopped                                       Unknown

@ pcgeek86 хороший улов. Позвольте мне сделать так, будто это остановлено.

@buckett , это хороший трюк. Кстати, срок действия ваших учетных данных не должен истекать (вас просят открыть браузер) раньше, чем через 2 недели (если вы не удалите $ HOME / .docker / machine). Это что-то не похоже на ваш опыт?

Вот новая версия, которая должна исправить проблему PowerState и проблему очистки виртуальной сети: http://cl.ly/fLkb

@ahmetalpbalkan Спасибо, это работает лучше. Однако еще одна ошибка заключается в том, что при изменении общедоступного IP-адреса после перезагрузки возникает исключение из-за недопустимых учетных данных.

Trevors-MBP:bin 4 trevorsullivan$ ./docker-machine-Darwin-x86_64 ls
NAME         ACTIVE   DRIVER         STATE     URL                         SWARM   DOCKER    ERRORS
azdh         -        azure          Running   tcp://40.118.175.219:2376           Unknown   Unable to query docker version: Get https://40.118.175.219:2376/v1.15/version: x509: certificate is valid for 104.42.125.236, not 40.118.175.219
dh           -        vmwarefusion   Running   tcp://172.16.217.129:2376           v1.10.2
dockerhost   -        virtualbox     Stopped                                       Unknown

@ pcgeek86 Я вижу, что это тот самый компьютер, который вы освободили от портала Azure. docker-machine обычно не освобождает, он только останавливает вашу виртуальную машину, и когда вы освобождаете, вы получаете новый IP-адрес.

Думаю, вот вопросы:

  1. должен ли драйвер Azure выделять статический IP-адрес для машин - чего-то, что дороже для пользователя? (возможно, может быть аргументом)
  2. следует ли поддерживать этот сценарий, в котором пользователь управляет / вмешивается в виртуальную машину вне докер-машины?

@ahmetalpbalkan Да, это та же машина. Я использовал CLI azure xplat, чтобы освободить виртуальную машину, а затем запустить ее резервное копирование через несколько часов.

По моему мнению:

  1. Docker полезен только при управлении со статическим IP-адресом. Следовательно, это должно быть требованием для хостов Docker в Azure.
  2. Нет, но статический IP-адрес по-прежнему будет требованием.

@ pcgeek86 , возможно, вы правы. Мое предположение заключалось в том, что докер-машина будет использовать команду docker-machine ip <vm> для получения IP-адреса каждый раз, когда она подключается к машине, но, по-видимому, она использует статический IP-адрес для генерации сертификатов (вы можете смягчить это, используя docker-machine regenerate-certs ) .

Сопровождающие: как вы думаете, драйверы машин должны выделять статические внешние IP-адреса по умолчанию (даже если они не бесплатны)?

@ pcgeek86 Я только что наблюдал такое же поведение в драйвере Google. По умолчанию он использует эфемерные общедоступные IP-адреса, и я получаю ту же ошибку сертификата TLS, когда перезапускаю виртуальную машину Google с портала. Я полагаю, тебе нельзя этого делать. :П

Но я надеюсь добавить логический флаг --azure-static-public-ip в будущем, но это не будет поведением по умолчанию, поскольку статическое IP-адрес имеет неявные затраты для пользователя.

@ahmetalpbalkan работает ли в этом случае регенерация сертификатов? Все три мои виртуальные машины работали, но потом я их сломал. Нет проблем, но если регенерация сертификатов работает ....

@squillace да, это то, для чего он предназначен, в случае потери сертификатов вы можете восстановить их через SSH.

@ahmetalpbalkan , похоже, решение, которое докер уже реализовал. Я столкнулся с этим в ASM dm, и регенерация работала нормально. для производства вы должны перейти к статике.

@squillace @ahmetalpbalkan Отлично, приятно знать, что docker regenerate-certs будет работать. Однако обязательно ли будет статический IP-адрес в производственной среде? Что, если вместо этого вы используете DNS-имя? Это вариант для Докера? Это может действительно помочь обойти проблему с сертификатом.

@ahmetalpbalkan Кажется, у меня есть полномочия на несколько часов. Не прошло и дня без повторного входа в систему. Я ничего не очищаю в своем домашнем каталоге.

@buckett Это определенно звучит как ошибка, которую мы не смогли воспроизвести. Не могли бы вы запустить docker-machine --debug ssh <vm> (замените ssh на ip / status как хотите) и отправьте мне вывод отладки (ahmetb на microsoft com) (или вставьте его в gist), когда вам будет предложено пройти аутентификацию в следующий раз?

изменить: следить за ним в автономном режиме по электронной почте.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги