Machine: Hubungkan ke mesin Windows Docker

Dibuat pada 22 Jan 2016  ·  60Komentar  ·  Sumber: docker/machine

Adakah yang mulai menambahkan atau memikirkan tentang driver dan provisi mesin-buruh pelabuhan untuk mesin Windows Docker?
Jadi siapa pun dapat menggunakan mesin galangan untuk mengamankan dan terhubung ke Windows Server 2016 TP4 semudah yang kita gunakan untuk Mesin Docker Linux?

Sesuatu seperti:

docker-machine create -d generic --generic-winrm-user "administrator" ... dev
docker-machine create -d azure --azure-username "administrator" --azure-winrm-port 5985 ... dev

Menggunakan WinRM (HTTP / HTTPS) sebagai ganti SSH untuk mengakses Windows Server jarak jauh dan memasukkan sertifikat TLS ke dalamnya dan mengkonfigurasi ulang layanan Windows Docker dan hal-hal lain.
Saya tahu bahwa pengemas memiliki komunikator untuk SSH dan WinRM bawaan Go untuk penyediaan.
Hanya menghubungkan titik-titik ...

ping @ahmetalpbalkan : smile:

arewindows kinenhancement

Komentar yang paling membantu

Aku mengikuti @ jen20 's petunjuk untuk membangun Windows AMI dengan SSH. Ia bekerja dengan Mesin Docker hingga titik penyediaan, di mana ia gagal karena tidak ada file /etc/os-release . Sekarang SSH di Windows tersedia (dengan sedikit usaha), dapatkah kita mendapatkan Penyedia Mesin Docker berbasis SSH untuk Windows?

Semua 60 komentar

Karena cara model provisi saat ini bekerja, mungkin tidak terlalu _too_ gila untuk mengimplementasikan fungsionalitas tersebut, meskipun akan membutuhkan pemikiran ulang atau papering atas beberapa asumsi yang cukup mendasar (misalnya adanya SSH).

Saya merasa bahwa cara ini perlu diterapkan adalah dengan memiliki beberapa tanda yang secara khusus menunjukkan bahwa ini adalah mesin Windows. misal --generic-winrm-userpass .

Saya tidak tahu banyak tentang wadah Windows Server, namun seperti yang dikatakan Nathan sebagian besar pekerjaan akan mendapatkan protokol SSH di Windows baik dengan menunggu Microsoft melakukannya (itu terjadi) atau menyediakan polyfill menggunakan WinRM mungkin (saya tidak tahu cara kerjanya sama sekali).

Saya ingat beberapa diskusi tentang ini juga terjadi secara internal. cc: @jstarks karena dia ada di tim kontainer jendela.

Jika Anda pikir Anda dapat membuat prototipe sesuatu, saya akan mengatakan lakukanlah.

Hai @StefanScherer , saya PM di tim Hyper-V dan saya benar-benar mencari cara bagaimana kami dapat mewujudkannya. Salah satu hal yang kami pikirkan adalah mungkin kami dapat menggunakan ini sebagai OS yang dapat ditarik oleh Mesin Docker. Jika kami menggunakan Nano, maka itu akan tetap sebagai unduhan kecil. Repo untuk Open SSH di proyek Windows ada di sini .

Setiap ide dihargai dan jika Anda akan membuat prototipe sesuatu, beri tahu saya. Saya akan terus memposting kembali di sini jika saya mengetahui lebih lanjut tentang cara membuat ini berfungsi.

cc: @dgageot

@ enderb-ms Oh, gambar Nano, itu akan bagus juga. Dan OpenSSH juga merupakan pilihan. Sementara itu, proyek lain seperti Packer dan Vagrant meningkatkan dukungan Windows untuk menggunakan WinRM dan menyingkirkan SSH agar memiliki komunikasi yang lebih asli.

Apa yang saya pikirkan sebagai langkah pertama adalah membiarkan mesin galangan terhubung ke server TP4, misalnya. dengan driver generik.

Belum mencoba driver biru, saya berpikir untuk memilih template mesin buruh pelabuhan TP4 VM + di Azure dan mesin buruh pelabuhan kemudian tahu untuk menyediakan VM Windows daripada VM Linux. Ini hanya perlu melakukan beberapa langkah minimal untuk menghubungkan mesin lokal di mana mesin galangan berjalan dengan Mesin Docker jarak jauh.

Ini adalah langkah-langkah dari driver generik yang dijalankan pada VM Linux yang telah menginstal Docker. Saya telah menambahkan beberapa ide untuk Windows:

  1. buruh pelabuhan menghubungkan ke alamat IP jarak jauh
  2. periksa versi OS jika dapat disediakan (cat / etc / os-release -> dapatkan beberapa informasi windows sebagai gantinya)
  3. perbarui nama host?
  4. perbarui / etc / hosts
  5. instal curl (tidak perlu menginstalnya di host Windows)
  6. periksa apakah buruh pelabuhan diinstal. Jika tidak menginstalnya. (mungkin menjalankan seluruh Install-ContainerHost.ps1?)
  7. periksa versi buruh pelabuhan
  8. membuat direktori konfigurasi buruh pelabuhan (/ etc / buruh pelabuhan ->% ProgramData% / buruh pelabuhan)
  9. hentikan layanan buruh pelabuhan
  10. masukkan ca.pem (Windows:% ProgramData% / docker / certs.d)
  11. masukkan server.pem
  12. masukkan server-key.pem
  13. tulis file konfigurasi buruh pelabuhan (/ etc / default / docker, mungkin peningkatan ke% ProgramData% / docker / runDockerDaemon.cmd)
  14. memulai layanan buruh pelabuhan
  15. netstat -an

Tahap 1:

Untuk Azure / TP4 lokal dengan skenario mesin buruh pelabuhan prainstal:

Langkah 1.) itu harus menggunakan WinRM (misalnya, lihat komunikator winrm pengemas ) daripada SSH.

Langkah 2.) dapat memeriksa apakah semuanya sudah aktif dan berjalan dan apakah VM adalah TP4. Jika tidak, batalkan jika tidak memungkinkan untuk menginstal semuanya, misalnya tanpa reboot.

Kemudian harus melakukan langkah 9.) ... 14.) untuk menghentikan buruh pelabuhan, masukkan sertifikat TLS dan restart buruh pelabuhan. Setelah itu mesin buruh pelabuhan telah membuat koneksi ke VM Azure / lokal atau lokal Windows atau on-prem Windows VM dan mengamankan port buruh pelabuhan.

Tahap 2:

Nanti pada langkah 2.) dapat ditingkatkan untuk mengizinkan server "kosong" 2016 menginstal Docker dengan langkah 6.)

Tahap 3:

Dan kemudian memiliki "boot2docker.iso" dengan gambar Nano di dalamnya untuk diunduh secara lokal.

Hanya beberapa pikiran pertama ;-)

@dgageot apakah Anda berencana untuk melakukan ini? Jika tidak, saya pikir kita harus mengarahkan orang-orang Microsoft ke arah yang benar sehingga mereka dapat mencoba dan membuat kemajuan

@friism Ada pekerjaan berkelanjutan dengan @ enderb-ms sudah

@dgageot bagus! Adakah tempat saya bisa mendapatkan detail lebih lanjut?

@dgageot Saya memiliki perubahan yang dapat menjalankan instance server Windows di Azure dan menyiapkan mesin Docker. Apakah ada repo, di mana karya @ enderb-ms tersedia? Saya dapat mengirimkan milik saya di sini untuk ditinjau dan mungkin menggabungkan atau menyatukan dengan apa pun yang dilakukan @ enderb-ms.

Penjelasan singkat tentang apa yang telah saya lakukan

  1. Tambahkan dukungan untuk memutar gambar Windows.
  2. Gunakan gambar TP4 Windows server 2016 di Azure
  3. Putar itu. Saya menggunakan perpustakaan https://github.com/Azure/azure-sdk-for-go alih-alih kode vendor di https://github.com/docker/machine/tree/master/vendor/github.com/ MSOpenTech / azure-sdk-for-go , yang sepertinya merupakan versi yang lebih lama.
  4. Gunakan WinRM untuk terhubung ke instance, instal mesin buruh pelabuhan
  5. Lakukan langkah lainnya. Saya perhatikan bahwa jaringan kadang-kadang kacau dan Vswitch perlu diatur.

cc @ahalpbalkan

@ppadala Luar biasa

hawt

Terima kasih @fanfoulis @friism. Pekerjaan ada di https://github.com/containerx/machine , tetapi itu juga termasuk beberapa perubahan lain yang tidak terkait dengan PR ini.

Saya membuat cabang baru, kode pembersihan dan akan segera mengirimkan permintaan penarikan.

Saya membuat permintaan tarik, setiap komentar dan ulasan dihargai.

Masih ada beberapa item hard-code yang perlu diperbaiki, yang akan saya perbaiki dalam beberapa hari ke depan.

@ppadala bagus banget. Saya pikir @ enderb-ms & pengelola galangan-mesin sedang mencoba mencari tahu apakah mereka harus menggunakan WinRM atau bootstrap OpenSSH pada Windows. Saya akan membiarkan orang-orang itu memutuskan pekerjaan mana yang harus dilanjutkan.

Sejauh menyangkut driver biru, saya khawatir kami tidak dapat mengubah azure driver. Saya baru saja menulis ulang driver biru dengan tumpukan Azure Resource Manager (ini adalah perubahan yang sangat besar). Detail ada di: https://github.com/docker/machine/issues/2742#issuecomment -189993875 saat ini kami sedang menangani masalah flakiness di Azure SDK, setelah selesai, saya akan mengirimkan PR untuk merilis azure baru sopir.

@ppadala juga penting bahwa ini mungkin tidak hanya perubahan driver azure karena hampir semua penyedia cloud akan memiliki gambar WS2016 dan (jika diperlukan) mesin galangan kapal mungkin perlu menambahkan tanda khusus windows tersebut.

@ppadala bagus banget. Saya pikir @ enderb-ms & pengelola galangan-mesin sedang mencoba mencari tahu apakah mereka harus menggunakan WinRM atau bootstrap OpenSSH pada Windows. Saya akan membiarkan orang-orang itu memutuskan pekerjaan mana yang harus dilanjutkan.

Saya sebenarnya telah mempertimbangkan opsi SSH juga. Saya hanya tidak suka server Windows OpenSSH yang saya coba, mengalami masalah saat menyambung ke server dari OS X. Meskipun demikian, saya belum mencoba semua server SSH yang mungkin, kalian lebih tahu. Senang bergabung dengan diskusi, beri tahu saya di mana diskusi itu berlangsung.

Sejauh menyangkut pengemudi biru, saya khawatir kami tidak dapat mengubah pengemudi biru. Saya baru saja menulis ulang driver biru dengan tumpukan Azure Resource Manager (ini adalah perubahan yang sangat besar). Detailnya ada di: # 2742 (komentar) saat ini kami sedang menangani masalah flakiness di Azure SDK, setelah itu selesai saya akan mengirimkan PR untuk merilis driver biru yang baru.

Jangan khawatir, perubahan yang telah saya lakukan sebenarnya tidak hanya ke driver biru, tetapi juga ke mesin buruh pelabuhan lainnya untuk menambahkan opsi untuk OS. Saya akan mencoba kode Anda yang diposting di # 2742. Apakah kode tersebut sudah memiliki dukungan untuk memutar gambar Windows di Azure?

@ppadala juga penting bahwa ini mungkin tidak hanya perubahan driver biru karena hampir semua penyedia cloud akan memiliki gambar WS2016 dan (jika diperlukan) mesin galangan mungkin perlu menambahkan tanda khusus windows tersebut.

Seperti yang saya sebutkan di atas, perubahan saya memiliki driver biru dan perubahan mesin buruh pelabuhan lainnya. Bagaimana kita melanjutkan dari sini? Saya bisa menunggu perubahan pengelola sumber daya Anda dilakukan dan kemudian kita bisa mencari cara untuk menambahkan flag khusus windows ke mesin galangan.

@ahmetalpbalkan Saya memeriksa kode yang Anda posting di # 2742. Seperti yang saya pahami, itu memindahkan driver untuk menggunakan ARM API dan tidak memiliki dukungan gambar Windows. Inilah yang saya usulkan

  1. Tinjau dan jalankan kode Anda
  2. Tambahkan dukungan gambar Windows yang berputar
  3. Tambahkan penyedia Windows menggunakan WinRM (atau SSH jika itu pilihan yang kami sepakati), bendera, dan perubahan lain di inti mesin galangan-galangan

Saya telah melakukan 2 dan 3 dengan driver saat ini dan saya dapat membuat perubahan serupa berdasarkan driver berbasis ARM Anda. Beri tau aku isi pikiranmu.

@ppadala terdengar bagus. jika Anda mencoba mengubah peringkat kode Anda di atas cabang saya, Anda dapat dibebaskan dan mulai melakukan beberapa pekerjaan. Dari segi fungsionalitas, driver baru sudah siap, tetapi kami masih menangani beberapa masalah di azure-sdk-for-go dan ini mungkin masih memerlukan waktu (seperti beberapa minggu) dan saya akan mengirimkan hasil akhirnya sebagai tarikan permintaan.

@ppadala ini luar biasa! Terima kasih sudah melakukan ini. Sayangnya, saya belum bisa mendapatkan waktu pengembang, jadi kami belum mulai mengerjakan ide kami. Tapi ini mungkin membantu saya mengajak orang-orang bergabung.
Salah satu alasan kami ingin menggunakan SSH agar dapat mengizinkan pengembang di platform lain (Linux dan OS X) untuk dapat menerapkan host kontainer Windows di VM di mesin lokal mereka atau di cloud. Kami telah mulai berbicara tentang kemungkinan menyertakan OpenSSH di beberapa gambar Azure, sehingga tidak ada langkah tambahan yang diperlukan untuk menambahkan kemampuan itu. Bisakah Anda memberi tahu saya lebih banyak tentang masalah yang Anda lihat dengan OpenSSH?
Menandai @dgageot yang juga memiliki pemikiran tentang WinRM.
Sekali lagi, ini bagus, terima kasih telah melakukan ini @ppadala

@ppadala ini luar biasa! Terima kasih sudah melakukan ini. Sayangnya, saya belum bisa mendapatkan waktu pengembang, jadi kami belum mulai mengerjakan ide kami. Tapi ini mungkin membantu saya mengajak orang-orang bergabung.
Salah satu alasan kami ingin menggunakan SSH agar dapat mengizinkan pengembang di platform lain (Linux dan OS X) untuk dapat menerapkan host kontainer Windows di VM di mesin lokal mereka atau di cloud. Kami telah mulai berbicara tentang kemungkinan menyertakan OpenSSH di beberapa gambar Azure, sehingga tidak ada langkah tambahan yang diperlukan untuk menambahkan kemampuan itu. Bisakah Anda memberi tahu saya lebih banyak tentang masalah yang Anda lihat dengan OpenSSH?

Saya sedang menyiapkan https://github.com/PowerShell/Win32-OpenSSH/wiki/Install-Win32-OpenSSH sebagai server SSH. Saat saya menjalankan ssh <server> <cmd> dari Mac, sepertinya tidak berfungsi, meskipun ssh interaktif biasa ke server berfungsi.

Jika Anda menyertakan server SSH dalam gambar Azure, maka itu pasti lebih bersih. antarmuka driver mesin-buruh pelabuhan tampaknya berasumsi bahwa akses SSH tersedia.

@ppadala sebenarnya, saya baru saja menemukan bahwa ada beberapa perpustakaan yang memungkinkan komunikasi winrm di Linux dan Mac OS X, yang akan membuat segalanya lebih sederhana untuk saat ini. Anda menggunakan perpustakaan ini untuk komunikasi winrm, bukan? Tahukah Anda jika itu berfungsi di Linux dan Mac OS X?

@ppadala sebenarnya, saya baru saja menemukan bahwa ada beberapa perpustakaan yang memungkinkan komunikasi winrm di Linux dan Mac OS X, yang akan membuat segalanya lebih sederhana untuk saat ini. Anda menggunakan perpustakaan ini untuk komunikasi winrm, bukan? Tahukah Anda jika itu berfungsi di Linux dan Mac OS X?

Ya, perpustakaan pengemas adalah yang saya gunakan. Ia bekerja baik di Mac OS X dan Linux.

@ppadala pembahasan ssh vs winrm sangat menarik:

  • SSH bagus karena itu berarti mesin selalu menggunakan protokol yang sama untuk berbicara dengan host (baik itu linux atau windows)
  • winrm bagus karena tidak melibatkan kemacetan perangkat lunak baru / asing ke windows

@ppadala sepertinya Anda dapat mengaktifkan winrm secara otomatis saat menyediakan di azure dengan EnableWinRMHttp . Detailnya di sini: https://msdn.microsoft.com/en-us/library/azure/dn495299.aspx

@ enderb-ms @ taylorb-microsoft gambar WS2016 mulai apa yang harus digunakan untuk ini?

@ppadala sepertinya Anda dapat mengaktifkan winrm secara otomatis saat menyediakan di azure dengan EnableWinRMHttp. Detailnya di sini: https://msdn.microsoft.com/en-us/library/azure/dn495299.aspx

Saya sudah melakukan ini, yang membuka port di Azure. Gambar juga harus mengaktifkan WinRM dan pengaturan aturan firewall Windows dengan benar. Mungkin orang-orang Microsoft dapat berpadu di sini, jika saya salah memahami ini.

mengenai pertanyaan WinRM vs OpenSSH.

Saya pikir keduanya pada akhirnya harus menjadi opsi ... pekerjaan OpenSSH untuk windows sedang berkembang (https://github.com/PowerShell/Win32-OpenSSH) tetapi itu belum sepenuhnya lengkap (misalnya belum berfungsi di Nano Server ). Jadi saya pikir WinRM adalah pilihan yang baik sekarang dan kemudian kita dapat melapisi OpenSSH sebagai / ketika tersedia untuk paritas dengan pengalaman Linux.

Hai @ppadala , beberapa rekan kerja saya memiliki beberapa pertanyaan tentang pembaruan yang Anda rencanakan untuk driver Azure:

  1. Apakah Anda punya rencana untuk mengujinya dengan Nano Server? Bagaimana pengemudi memilih OS apa yang akan dipilih?
  2. Menggunakan perubahan yang akan Anda buat, apakah skenario ini akan berhasil? "Pengguna menggunakan fungsi pembuatan mesin buruh pelabuhan dengan driver Azure untuk menyediakan VM host kontainer Windows, lalu menggunakan mesin buruh pelabuhan env untuk mulai mengelola penampung mereka dari VM dari klien mereka"
  3. Seperti apa tampilan perintah "docker-machine create" untuk Windows?

Juga, saya tidak bermaksud memaksa tetapi saya penasaran, ada ide kapan PR Anda akan naik? Sekali lagi, terima kasih banyak untuk ini!

Berkenaan dengan pertanyaan @friism , jika ini dapat bekerja dengan gambar Full Server dan Nano Server WS2016, itu akan sempurna.

  1. Apakah Anda punya rencana untuk mengujinya dengan Nano Server? Bagaimana pengemudi memilih OS apa yang akan dipilih?

Iya. Driver hanya memutar gambar server Windows yang diberikan sebagai opsi yang mirip dengan bagaimana gambar linux dipilih dengan opsi --azure-image. Yang mengatakan server nano perlu diuji.

  1. Menggunakan perubahan yang akan Anda buat, apakah skenario ini akan berhasil? "Pengguna menggunakan fungsi pembuatan mesin buruh pelabuhan dengan driver Azure untuk menyediakan VM host kontainer Windows, lalu menggunakan mesin buruh pelabuhan env untuk mulai mengelola penampung mereka dari VM dari klien mereka"

Iya. Ini adalah kasus penggunaan utama. Fungsionalitas klien tetap sama, karena yang kami lakukan hanyalah menjalankan host Docker server Windows dan menyiapkan port. Jika mesin buruh pelabuhan Windows mendukung ini (yang memang demikian), maka ini berfungsi.

  1. Seperti apa tampilan perintah "docker-machine create" untuk Windows?

Opsi tambahannya adalah --azure-os "windows", --azure-winrm-username "username", --azure-winrm-password "password" mirip dengan saran @StefanScherer di atas.

Mengenai timeline, saya sudah mengubah sebagian besar perubahan saya dengan driver Azure baru (https://github.com/docker/machine/pull/3159), tetapi @ahmetalpbalkan , saya dan beberapa orang lainnya menemukan masalah dengan otentikasi (https: //github.com/docker/machine/issues/3201) dan @ahmetalpbalkan membuat komentar tentang kembali ke pengemudi lama (https://github.com/docker/machine/issues/3201#issuecomment-199409527). Pertama-tama kita perlu menyelesaikan diskusi itu untuk melangkah lebih jauh. Jika kita kembali ke driver lama, akan lebih mudah bagi saya untuk menggabungkannya.

Apakah Anda menghadiri Build? Akan sangat bagus untuk disinkronkan secara langsung.

@ppadala saya akan berada di sana! Docker juga mengadakan makan siang pada pukul 12 pada tanggal 30 di Delarosa, 37 Yerba Buena. Ping @ ah3rz untuk detailnya

@ppadala Saya tidak akan berada di Build, tetapi manajer saya @ taylorb-microsoft akan melakukannya, jadi Anda dapat menyinkronkan dengannya :-)

@ppadala Anda menyebutkan bahwa Anda tidak diblokir , beri tahu kami apakah ada yang dapat kami lakukan untuk membantu.

Memperbarui. Saya memiliki sebagian besar perubahan yang dibuat ulang, saya dapat menjalankan server Windows. Membersihkan kode untuk dikirim dalam beberapa hari.

Namun kita perlu memutuskan image server Windows yang akan digunakan sebagai image VM target. Gambar Windows Server Core resmi saat ini hanya mengaktifkan RDP. Saya membutuhkan WinRM untuk diaktifkan pada gambar. Perhatikan bahwa ini bukan tentang mengaktifkan WinRM melalui Azure (https://msdn.microsoft.com/en-us/library/azure/dn495299.aspx) seperti yang disarankan beberapa orang. Itu hanya membuka port WinRM di Azure. Instance image yang sedang berjalan (kemudian ditangkap menjadi image baru melalui sysprep) seharusnya menjalankan perintah berikut.

PS C:\> winrm set winrm/config/service/auth @{Basic=”true”}
PS C:\> winrm set winrm/config/service @{Allowunencrypted=”true”}
PS C:\> New-NetFirewallRule -Protocol TCP -LocalPort 5985 -Direction Inbound -Action Allow -DisplayName winrm
PS C:\> winrm quickconfig

Kerutan lain adalah bahwa instalasi mesin buruh pelabuhan membutuhkan waktu lebih lama daripada instalasi di sisi Linux. VM juga harus di-boot ulang. Saya menggunakan perintah berikut untuk instalasi mesin buruh pelabuhan.

PS C:\> wget -uri https://aka.ms/tp4/Install-ContainerHost -OutFile C:\Install-ContainerHost.ps1
PS C:\> powershell.exe -NoProfile C:\Install-ContainerHost.ps1 -HyperV

Reboot

PS C:\> Install-ContainerImage -Name WindowsServerCore -Version 10.0.10586.0
PS C:\> wget https://raw.githubusercontent.com/Microsoft/Virtualization-Documentation/live/windows-server-container-tools/Update-ContainerHost/Update-ContainerHost.ps1 -OutFile Update-ContainerHost.ps1
PS C:\> ./Update-ContainerHost.ps1

Pertanyaan untuk @ enderb-ms dan @ahmetalpbalkan : dapatkah Microsoft memberikan gambar yang telah mengaktifkan WinRM? Sementara kita melakukan itu, haruskah kita mempertimbangkan bundling mesin galangan juga dengan itu daripada instalasi on-demand? Meskipun ini membatasi pengguna ke versi paket mesin galangan tertentu, VM akan tersedia jauh lebih cepat (jika tidak, pengguna menjalankan mesin galangan dan menunggu satu jam atau lebih untuk mendapatkan host galangan Windows Server mereka.).

Saat ini, saya membuat gambar khusus yang memiliki WinRM dan mesin galangan terpasang dan dikonfigurasi.

@ppadala adalah cabang mana saja yang umum? Dengan cara Anda memulai VM, dapatkah Anda tidak menjalankan skrip init seperti di sini? https://github.com/Azure/azure-quickstart-templates/blob/875d139c16c9c023dce519e6dd48c707e3473346/201-vm-winrm-windows/azuredeploy.json#L183

@ppadala adalah cabang mana saja yang umum? Dengan cara Anda memulai VM, dapatkah Anda tidak menjalankan skrip init seperti di sini? https://github.com/Azure/azure-quickstart-templates/blob/875d139c16c9c023dce519e6dd48c707e3473346/201-vm-winrm-windows/azuredeploy.json#L183

Cabang ini publik, tapi saya belum check-in terbaru. Biarkan saya melihat apakah saya bisa melakukan ini.

@ppadala adalah cabang mana saja yang umum? Dengan cara Anda memulai VM, dapatkah Anda tidak menjalankan skrip init seperti di sini? https://github.com/Azure/azure-quickstart-templates/blob/875d139c16c9c023dce519e6dd48c707e3473346/201-vm-winrm-windows/azuredeploy.json#L183

Saya mencoba meneruskan sumber daya, tetapi mendapatkan kesalahan

Error creating machine: Error in driver during machine creation: compute/VirtualMachinesClient:CreateOrUpdate 400 Failure responding to request -- Original Error: azure: Service returned an error. Code="InvalidRequestContent" Message="The request content was invalid and could not be deserialized: 'Could not find member 'resources' on object of type 'ResourceDefinition'. Path 'resources', line 1, position 953.'." Status=400

Berikut kode yang mencoba melakukan ini: https://github.com/ppadala/machine/blob/azure-windows/drivers/azure/azureutil/azureutil.go#L540. Anda dapat melihat komit https://github.com/ppadala/machine/commits/azure-windows untuk melihat perubahan saya untuk mendapatkan dukungan Windows.

Cara yang tepat untuk melakukannya adalah dengan membuat Azure go-sdk mengekspos fungsi yang mudah digunakan untuk menyiapkan template penerapan ini. Sulit untuk menerjemahkan hal yang tepat dengan melihat template json deploy. @ahmetalpbalkan , ada pemikiran?

Pada dasarnya, ada dua jalur.

  1. Memiliki gambar khusus dengan WinRM (dan mungkin mesin galangan kapal) diinstal dan dikonfigurasi. Kemudian, kode yang saya miliki sejauh ini siap digunakan.
  2. Mulai dari gambar Windows server 2016 generik, cari tahu cara menginstal melalui templat dan kemudian lanjutkan dengan langkah-langkah lainnya seperti mengunggah sertifikat, dll.

@ppadala saya bingung juga. Saya yakin API mencoba mengatakan Anda tidak dapat menentukan ekstensi pada panggilan pembuatan VM. Misalnya ketika Anda menerapkan template ARM dengan ekstensi dan melihat penerapan terjadi, ARM pertama-tama membuat VM, lalu membuat sumber daya Ekstensi secara terpisah setelah VM dibuat ...

Harus ada beberapa metode untuk menambahkan ekstensi ke VM dalam paket arm/compute . Saya sarankan menambahkan ekstensi setelah VM dibuat, itu akan membebaskan Anda.

Terima kasih @ahmetalpbalkan. Saya menambahkan VirtualMachineExtension setelah pembuatan VM dan berhasil. Saya harus sedikit bergumul untuk mencari cara yang tepat untuk mengatur pendengar WinRM HTTPS, tetapi saya sudah menyiapkan permintaan tarik # 3329. Beri tahu saya komentar Anda.

Saya juga mengunggah binari di https://www.dropbox.com/sh/kpc46xtc8su2sj7/AABtxVIVbGo8KLy7tu6HnWwza?dl=0 untuk pengujian yang mudah.

Penggunaan: Tiga parameter baru ditambahkan ke driver Azure

--azure-os "linux"                  OS for the Azure VM (Windows|Linux)
--azure-winrm-user "docker-user"    Username for WinRM login [$AZURE_WINRM_USER]
--azure-winrm-password              Password for WinRM login [$AZURE_WINRM_PASSWORD]

Perintah sampel

docker-machine -D create -d azure --azure-subscription-id $(cat ~/azure/subid) --azure-os "windows" --azure-image MicrosoftWindowsServer:WindowsServer:2016-Technical-Preview-with-Containers:2016.0.20151118 --azure-winrm-password "mysecretpassword" vhost-win-test

@ppadala @ahmetalpbalkan Saya tidak tahu apakah Anda sudah memasukkan ini, tetapi artikel tentang mengamankan daemon windows ini mungkin juga bagus: https://github.com/Microsoft/Virtualization-Documentation/tree/master/windows-server- container-tools / DockerTLS

/ cc @PatrickLang @swernli

@ppadala Terima kasih, ini benar-benar luar biasa. Saya baru saja mencoba perintah sampel untuk membuat mesin TP4 di Azure. Dan ya, ini bekerja dengan binari bawaan Anda langsung dari kotak. (ok, Anda harus memasukkan kata sandi yang lebih kompleks agar sesuai dengan persyaratan kompleksitas kata sandi windows)

Mesin Docker yang aman dengan perintah mesin buruh pelabuhan yang sederhana. Itu terobosan yang bagus!

$ ./docker-machine-Darwin-x86_64 -D create -d azure --azure-subscription-id $(pass azure) --azure-os "windows" --azure-image MicrosoftWindowsServer:WindowsServer:2016-Technical-Preview-with-Containers:2016.0.20151118 --azure-winrm-password $(pass azure-winrm-password) vhost-win-test
$ eval $(./docker-machine-Darwin-x86_64 env vhost-win-test)
$ docker version
Client:
 Version:      1.10.1
 API version:  1.22
 Go version:   go1.5.3
 Git commit:   9e83765
 Built:        Fri Feb 12 22:11:40 UTC 2016
 OS/Arch:      darwin/amd64

Server:
 Version:      1.10.0-dev
 API version:  1.22
 Go version:   go1.5.1
 Git commit:   59a341e
 Built:        Fri Nov 13 17:23:07 UTC 2015
 OS/Arch:      windows/amd64

@ppadala Dan yang lebih fantastis lagi adalah docker-machine rm -f vhost-win-test membersihkan SEMUANYA - Saya berjuang berkali-kali untuk membersihkan semua bagian VM yang dibuat dengan "deploy to azure", selalu melewatkan tombol "batalkan penerapan dari biru langit" 😄

@ppadala @ahmetalpbalkan Saya tidak tahu apakah Anda sudah memasukkan ini, tetapi artikel tentang mengamankan daemon windows ini mungkin juga bagus: https://github.com/Microsoft/Virtualization-Documentation/tree/master/windows-server- container-tools / DockerTLS

Terima kasih untuk tautannya @friism. Ya, mesin buruh pelabuhan sudah diamankan dengan TLS yang mirip dengan Linux. buruh pelabuhan membuat alur kerja menghasilkan kredensial (cert, key dan ca) dan saya menggunakan WinRM untuk mengunggahnya ke Windows Server.

@ppadala Terima kasih, ini benar-benar luar biasa. Saya baru saja mencoba perintah sampel untuk membuat mesin TP4 di Azure. Dan ya, ini bekerja dengan binari bawaan Anda langsung dari kotak. (ok, Anda harus memasukkan kata sandi yang lebih kompleks agar sesuai dengan persyaratan kompleksitas kata sandi windows)

Terima kasih telah mencoba @StefanScherer. Kata sandi plaintext adalah satu-satunya bagian yang saya tidak suka di sini (saya suka pendekatan pass Anda). Kita dapat beralih ke autentikasi berbasis sertifikat nanti. Sayangnya perpustakaan pengemas belum mendukung itu.

@ppadala Dan yang lebih fantastis lagi adalah bahwa mesin galangan rm -f vhost-win-test membersihkan SEMUANYA - Saya berjuang berkali-kali untuk membersihkan semua bagian VM yang dibuat dengan "deploy to azure", selalu melewatkan " membatalkan penerapan dari "tombol biru" 😄

Penghargaan diberikan kepada

@ppadala ini luar biasa. Kerja bagus! Saya kira pertanyaannya sekarang adalah bagaimana menggabungkan ini ke driver biru dalam jangka pendek dan ke driver lain (seperti google / aws) dalam jangka panjang.

@ahmetalpbalkan permintaan pull # 3329 sudah disinkronkan dengan master dan digabungkan dengan driver azure, akan sangat bagus jika Anda dapat meninjau dan memberikan komentar. Saat ini, hanya Azure yang memiliki VM Windows server 2016, tetapi kodenya ditulis sedemikian rupa sehingga mendukung GCP, AWS, vSphere, dan lainnya dengan mudah.

Saat ini, hanya Azure yang memiliki VM Windows server 2016, tetapi kodenya ditulis sedemikian rupa sehingga mendukung GCP, AWS, vSphere, dan lainnya dengan mudah.

  • @ppadala
    Apakah ini berarti bahwa mendukung penyedia vm lokal sudah dekat?

@ppadala @srounce Saya akan mengatakan seseorang harus melihat kemampuan eksekusi WinRM dan Skrip Startup dari API AWS / GCE / lainnya untuk mengetahui apakah fungsionalitas tersebut dapat ditransfer ke driver lain dengan set perubahan minimal.

@ppadala @ahmetalpbalkan Bisakah driver 'azure' mesin buruh pelabuhan digunakan dengan AzureStack ?

@illeb Saya khawatir belum. Jika Anda membutuhkannya, buka edisi terpisah.

Saya baru saja mengunduh buruh pelabuhan untuk windows yang memiliki 1,12 RC2 yang memiliki 0.8.0-rc1 tetapi ketika saya mencoba opsi "azure-os" "windows" sepertinya tidak berhasil. Tolong beri tahu saya di mana saya bisa memperoleh versi mesin buruh pelabuhan yang dapat membuat host buruh pelabuhan TP5 Windows 2016 di Azure.

Terima kasih,

@SharadGumaste apa kesalahannya saat Anda mengatakan "tidak berhasil"? Sudahkah Anda mencoba menentukan gambar dengan --azure-image ?

Saya baru saja mengunduh buruh pelabuhan untuk windows yang memiliki 1,12 RC2 yang memiliki 0.8.0-rc1 tetapi ketika saya mencoba opsi "azure-os" "windows" sepertinya tidak berhasil. Tolong beri tahu saya di mana saya bisa memperoleh versi mesin buruh pelabuhan yang dapat membuat host buruh pelabuhan TP5 Windows 2016 di Azure.

@SharadGumaste Saya menduga Anda mencoba versi rilis. Patch untuk mendukung Windows (opsi windows azure-os) belum digabungkan.

Pradeep, ya saya melakukan pembaruan dari perangkat lunak buruh pelabuhan. Apa yang terbaik
cara untuk mendapatkan biner dari pekerjaan Anda? Saya hampir saja melakukan demo untuk a
klien kami kecuali saya tidak dapat membuat server Windows barebone dan menginstal
buruh pelabuhan barang terkait dari awal dan menambahkan mesin itu ke
buruh pelabuhan dan membangun dan menyebarkan dari Visual Studio.
Saya terjebak di sertifikat TLS dll ...

Terima kasih sebelumnya atas bantuannya.

Pada hari Kamis, 23 Juni 2016, Pradeep Padala [email protected] menulis:

Saya baru saja mengunduh buruh pelabuhan untuk windows yang memiliki 1,12 RC2 itu
memiliki 0.8.0-rc1 tetapi ketika saya mencoba opsi "azure-os" "windows" ia melakukannya
sepertinya tidak berhasil. Tolong beritahu saya di mana saya bisa mendapatkan mesin buruh pelabuhan
versi yang dapat membuat host buruh pelabuhan TP5 Windows 2016 di Azure.

@SharadGumaste https://github.com/SharadGumaste Saya rasa Anda memang demikian
mencoba versi rilis. Patch untuk mendukung Windows (azure-os
opsi windows) belum digabungkan.

-
Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub
https://github.com/docker/machine/issues/2907#issuecomment -228218888,
atau nonaktifkan utasnya
https://github.com/notifications/unsubscribe/AH3YqqQLlXWUnSdw4i2TzsqXa4gHmTVYks5qOxt1gaJpZM4HKwbT
.

"A common mistake people make when trying to design something

sangat mudah adalah meremehkan kecerdikan orang bodoh sepenuhnya. "

– Douglas Adams, author (1952 – 2001)

@SharadGumaste dapatkah Anda mengirim email ke [email protected]? Saya memiliki repo terpisah untuk mesin buruh pelabuhan untuk Windows, saya dapat mengirimi Anda petunjuk tentang penyiapan.

Apakah ada berita tentang memutar host Windows Docker di VirtualBox lokal?

Apakah ada yang punya prototipe yang dapat menjalankan VM Windows di Azure?

@djanosik Saya sedang berusaha membuat mesin @ppadala , mendapatkannya berdasarkan master terbaru, dan sedang mempelajarinya sekarang. Ada di https://github.com/davidarcher/machine/tree/azure_winrm .

Aku mengikuti @ jen20 's petunjuk untuk membangun Windows AMI dengan SSH. Ia bekerja dengan Mesin Docker hingga titik penyediaan, di mana ia gagal karena tidak ada file /etc/os-release . Sekarang SSH di Windows tersedia (dengan sedikit usaha), dapatkah kita mendapatkan Penyedia Mesin Docker berbasis SSH untuk Windows?

Apakah halaman ini membantu?
0 / 5 - 0 peringkat