Machine: برنامج تشغيل Azure - إصدار مدير الموارد

تم إنشاؤها على ٥ يناير ٢٠١٦  ·  69تعليقات  ·  مصدر: docker/machine

أعتقد أنني محق في القول إن الدعم الحالي لجهاز الإرساء على Azure يستخدم نموذج النشر الكلاسيكي. سيكون من الرائع دعم نموذج إدارة الموارد أيضًا (نظرًا لأن هذا هو ما توصي به MS لعمليات النشر الجديدة).

driveazure kinenhancement

ال 69 كومينتر

: +1:

+1

+1

هناك خطط لنقل موفر Azure لآلة الإرساء لاستخدام Azure Resource Manager - راجع # 496

lizrice يتم العمل على هذا حاليًا بنفسي. نحن على دراية بالطلب على هذا ، لذلك نتوقع شيئًا قريبًا. سوف أقوم بتحديث هذا الموضوع بمجرد أن يكون لدينا شيء جديد.

هذا خبر ممتاز ahmetalpbalkan :-)

+1

وسيكون هذا مفيدا جدا! شكرا للعمل بنشاط على ذلك.

بالتأكيد بحاجة إلى هذا. تحتاج أيضًا إلى الابتعاد عن استخدام الشهادات للمصادقة ، ما لم يتم استخدام Azure Active Directory Service الأساسي. أي تقدمahmetalpbalkan؟

في صحتك،
تريفور سوليفان

@ pcgeek86 لن نقوم "azure login" ). سيطالبك كل أسبوعين بفتح نافذة متصفح والنقر فوق زر لترخيص التطبيق.

ahmetalpbalkan ممتاز ، لذا سيكون لديك معلمة --username أيضًا ، مثل azure-clil؟

@ pcgeek86 ، لا. لا يتطلب Azure CLI معلمة اسم المستخدم. إنه موجود للتوافق مع الإصدارات السابقة.

ahmetalpbalkan لم --username هي التي تمكنك من تحديد اسم مستخدم Azure Active Directory (AAD). كيف يتم هذا "التوافق مع الإصدارات السابقة"؟ ماذا تقترح للتنفيذ النهائي؟

المصادقة المستندة إلى شهادة إدارة خدمة Azure (ASM) هي "التوافق مع الإصدارات السابقة".

@ pcgeek86 hmm ، لم أدرك مطلقًا أنه يُستخدم https://aka.ms/devicelogin ، هل يتيح لك تحديد اسم مستخدم AAD الخاص بك هناك؟ إذا كان من الممكن تنفيذ نفس المهمة بدون azure login (بدون --username ) فأنا أنوي الاحتفاظ بها على هذا النحو.

ahmetalpbalkan ربما تحتاج إلى أن تكون في وضع ARM ( azure config arm ) من أجل استخدام مصادقة AAD مع ARM. لا أستخدم "وضع" ASM كثيرًا.

نعم ، يمكنك استخدام اسم مستخدم AAD مع https://aka.ms/devicelogin. ومع ذلك ، أفضل تجنب الخروج إلى المتصفح ، وبدلاً من ذلك حدد اسم المستخدم باستخدام --username . يعمل بشكل أفضل في سيناريوهات النص فقط. :)

إذا كان من الممكن القيام بنفس المهمة دون تسجيل الدخول إلى azure (بدون اسم المستخدم -) فإنني أنوي الاحتفاظ بها على هذا النحو.

لذا ، فقط للتأكد من فهمي بشكل صحيح ، هل تنوي مطالبة المستخدم باستخدام متصفح ويب لإكمال المصادقة ، بدلاً من كتابة كلمة المرور الخاصة به في سطر الأوامر؟

باستخدام حساب يتطلب 2fa ، سيتعين عليك المصادقة بأي طريقة. لست واضحًا أن هذا يمثل تحسينًا كبيرًا لحالة 2fa.

squillace لمستخدمي المصادقة متعددة العوامل ، بالتأكيد. ولكن لماذا تلبي احتياجات مجموعة واحدة فقط من المستخدمين؟ أعتقد أن الغالبية لن تستخدم أسلوب العائالت المتعددة MFA على أي حال.

في هذه المرحلة ، يكون الأمر أكثر صعوبة على الجميع ، ولن تزعج الناس من خلال إجبارهم على استخدام متصفح الويب لمصادقة أداة سطر الأوامر؟

في الواقع ، لماذا لا نخطو خطوة إلى الأمام ، وتدعم أسلوب العائالت المتعددة MFA من سطر الأوامر بطريقة ما؟

لا يجب عليك جمع أسماء المستخدمين وكلمات المرور خارج شاشة تسجيل الدخول إلى AAD العادية. إنها ممارسة غير آمنة وسيئة. بالإضافة إلى أن هناك سيناريوهات كثيرة جدًا من الناحية الفنية يجب تغطيتها لجعلها تعمل بالفعل. 2FA غير ممكن بدون فتح مستعرض ، على سبيل المثال على ADFS prem ، fob الآمن ، مصادقة البطاقة الذكية ، إلخ ...

لا أريد تلبية احتياجات مجموعة واحدة فقط ، بل يجب أن يغطي السيناريو الأساسي الجميع.

مرسلة من Outlook Mo bilehttps: //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-subscription-id\
- عمليات المستخدم Azure-ssh \
- آزور-مورد-جروب آميتسماشين \
- موقع آزور شرق \
ahmetsmachine
تشغيل عمليات تحقق ما قبل الإنشاء ...
(ahmetsmachine) Microsoft Azure: لتسجيل الدخول ، استخدم مستعرض ويب لفتح الصفحة https://aka.ms/devicelogin. ادخل الكودللمصادقة.
(ahmetsmachine) تم إكمال فحوصات ما قبل إنشاء الماكينة.
جاري إنشاء آلة ...
(ahmetsmachine) الاستعلام عن مجموعة الموارد الموجودة ... name = "ahmetsmachine"
(ahmetsmachine) إنشاء مجموعة موارد ... الموقع = "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) إنشاء حساب تخزين في الشرق
(ahmetsmachine) إنشاء آلة افتراضية ... name = "ahmetsmachine" location = "eastus" size = "Standard_A2" username = "ops" osImage = " canonical: UbuntuServer : 14.04.3- LTS: latest "
في انتظار تشغيل الجهاز ، قد يستغرق ذلك بضع دقائق ...
الكشف عن نظام التشغيل للمثيل الذي تم إنشاؤه ...
في انتظار توفر SSH ...
جاري الكشف عن الموفر ...
التزويد مع أوبونتو (مبتدئ) ...
تثبيت Docker ...
جاري نسخ الشهادات إلى دليل الجهاز المحلي ...
جاري نسخ الشهادات إلى الآلة البعيدة ...
جارٍ إعداد تكوين Docker في البرنامج الخفي البعيد ...
جارٍ التحقق من الاتصال بـ Docker ...
Docker قيد التشغيل!
لمعرفة كيفية توصيل Docker Client الخاص بك بمحرك Docker الذي يعمل على هذا الجهاز الظاهري ، قم بتشغيل:عامل ميناء-آلة- داروين x86_64 env ahmetsmachine

سأحاول نسخ Windows و Linux الآن. لطيف. جاءت المعلومات على الفور. أنا أيضًا أحب كثيرًا بيئة الشبكة الأساسية وخيارات المنافذ. شكر!

توجد حاليًا مشكلة على windows ، وهي لا تتم المصادقة. أقترح المحاولة مع منصات أخرى في الوقت الحالي. شكراsquillace!

حسنًا ، سأفعل عائلة دبيان.

نعم ، يتعلق الخطأ الموجود على Windows بالرمز المميز الذي يتم نسخه إلى ذاكرة التخزين المؤقت للرمز المميز. أرسل التفاصيل إلى ahmetalpbalkan في وقت سابق من هذا المساء.

في صحتك،
تريفور سوليفان

يعمل بشكل مثالي على النعناع 17.3.

@ pcgeek86 ، يرجى تجربة هذا 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   

ولكن بعد ذلك عندما حاولت إزالة مثيل azure القديم ، طُلب مني تسجيل الدخول مرة أخرى:

$ 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 للصق في رمز المصادقة قصير جدًا حيث لا يمكنني إدارة فتح متصفح ، ونسخ ولصق رمز المصادقة والنقر لقبوله ، وتسجيل الدخول إلى الصحيح حساب وقبول الأذونات.

وعندما لا يتم تعليق جهاز الكمبيوتر المحمول الخاص بي في منتصف الطريق من خلال إنشاء الجهاز ، فقد أنشأ مضيفًا جديدًا يعمل على عامل إرساء (سحر ، شكرًا ،: كعكة :). لقد تلقيت خطأً في الإنشاء ولكني تمكنت من تشغيل 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 Host في Azure. سأحاول نشر صورة عليه.

buckett أنت محق ، الإذن في الأمر ls سيكون مشكلة حيث تنتهي مهلته بينما نطلب التفويض. ليس لدي حاليًا حل لذلك ، لكنني أعتقد أن هذا لن يكون مشكلة كبيرة في كثير من الأحيان ، فهو يعمل في create / rm . سوف أقوم بتصحيح مشكلة الشبكة الافتراضية. شكرا على الإبلاغ.

@ pcgeek86 شكرا على المحاولة.

buckett سيكون من المثير للاهتمام معرفة ما إذا كان هناك أي اختلاف بين فترة المهلة مع آلة الإرساء هذه مقابل Azure CLI. سأرى عن ذلك غدا.

squillace هذين لا علاقة لهما. في ls يتوقع الجهاز أن يستجيب السائق في غضون 10 ثوانٍ أو نحو ذلك ، إذا لم تتمكن من المصادقة خلال فترة زمنية قصيرة ، فستنتهي المهلة.

آه ، جميل. هذا قصير جدًا إذا وصلت إلى لحظة المصادقة.

buckett من مخرجاتك أدركت أننا نحاول حذف VM بدلاً من VNet أثناء تنظيف VNet :) لقد أصلحته الآن. أحدث الإصدارات لن تواجه هذه المشكلة. شكرا على الملاحظة والتقرير!

يبدو أن docker-machine ssh {machine} لديه مهلة طويلة لطيفة ، لذلك إذا انتهت صلاحية رمز المصادقة ، فقد قمت للتو بتجديده عن طريق إنشاء اتصال ssh ثم استخدمه لبضع ساعات.

ahmetalpbalkan عند إلغاء تخصيص (إيقاف التشغيل) Azure VM ، يشكو الأمر 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 هذه خدعة جميلة. بالمناسبة ، لا يجب أن تنتهي صلاحية بيانات الاعتماد الخاصة بك (تطلب منك فتح المتصفح) قبل أسبوعين (ما لم تحذف $ 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 أرى أن هذا هو نفس الجهاز الذي قمت

أعتقد أن الأسئلة هنا هي:

  1. هل يجب أن يخصص برنامج التشغيل azure عنوان IP ثابتًا للآلات - وهو أمر يكلف المستخدم أكثر؟ (ربما يمكن أن تكون حجة)
  2. هل يجب دعم هذا السيناريو حيث يدير / يتدخل المستخدم جهاز VM الخارجي؟

ahmetalpbalkan نعم ، هذا هو نفس الجهاز. لقد استخدمت azure xplat CLI لإلغاء تخصيص الجهاز الظاهري ، ثم شغله احتياطيًا بعد بضع ساعات.

فى رايى:

  1. يكون Docker مفيدًا فقط عند إدارته باستخدام IP ثابت. لذلك ، يجب أن يكون هذا أحد متطلبات Docker Hosts على Azure.
  2. لا ، ولكن IP الثابت لا يزال شرطًا.

@ pcgeek86 قد تكون على حق. كان افتراضي هو أن آلة الإرساء ستستخدم الأمر docker-machine ip <vm> لجلب عنوان IP في كل مرة تقوم فيها بتوصيل الجهاز ، ولكن يبدو أنها تعتمد على IP ثابت لإنشاء شهادات (يمكنك التخفيف من ذلك باستخدام docker-machine regenerate-certs ) .

المشرفون على الصيانة: هل تعتقد أن برامج تشغيل الجهاز يجب أن تخصص عناوين IP خارجية ثابتة بشكل افتراضي (حتى لو لم تكن مجانية)؟

@ pcgeek86 لقد لاحظت للتو نفس السلوك في برنامج تشغيل Google. يستخدم عناوين IP العامة المؤقتة بشكل افتراضي وأحصل على نفس خطأ شهادة TLS عندما أعيد تشغيل Google VM من البوابة. أعتقد أنه ليس من المفترض أن تفعل هذا. : ص

لكنني آمل في إضافة علامة منطقية --azure-static-public-ip في المستقبل ، لكنها لن تكون السلوك الافتراضي لأن تخصيص IP الثابت له تكلفة ضمنية للمستخدم.

ahmetalpbalkan هل يعمل regenerate-certs في هذه الحالة؟ عملت الأجهزة الافتراضية الثلاثة الخاصة بي ، لكنني مزقتها بعد ذلك. لا توجد مشاكل ، ولكن إذا كان تجديد الشهادات يعمل ...

squillace نعم ، هذا ما تم تصميمه من أجله ، في حالة فقد الشهادات ، يمكنك تجديدها عبر SSH.

ahmetalpbalkan يبدو أنه طبقه عامل التحميل بالفعل. واجهت هذا في ASM dm ، وعملت إعادة التوليد بشكل جيد. للإنتاج ، ستنتقل إلى ثابت.

squillace ممتازahmetalpbalkan، وحسن أن نعرف أن docker regenerate-certs ستعمل. هل ستكون الملكية الفكرية الثابتة مطلوبة بالضرورة في الإنتاج رغم ذلك؟ ماذا لو كنت تستخدم اسم DNS بدلاً من ذلك؟ هل هذا خيار لـ Docker؟ قد يساعد ذلك بالفعل في التغلب على مشكلة الشهادة.

ahmetalpbalkan يبدو أن أوراق الاعتماد الخاصة بي تدوم بضع ساعات. لم يمر يوم دون الحاجة إلى تسجيل الدخول مرة أخرى. لا أقوم بمسح أي شيء في دليل منزلي.

buckett يبدو هذا بالتأكيد وكأنه خطأ لم نتمكن من إنتاجه. هل يمكنك من فضلك تشغيل docker-machine --debug ssh <vm> (استبدل ssh بـ ip / status كما يحلو لك) وأرسل إخراج التصحيح إليّ (ahmetb at microsoft com) (أو الصقه في gist) عندما يُطلب منك المصادقة في المرة القادمة؟

تحرير: المتابعة معه في وضع عدم الاتصال عبر البريد الإلكتروني.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات