Bekas dalam Windows Server 2016: Apa yang perlu anda ketahui

Dalam sebuah cerita yang saya tulis untuk Computerworld pada bulan Januari, yang merupakan tinjauan semula Windows Server 2016 Technical Preview 4, saya menyebut sokongan baru Windows Server untuk wadah Hyper-V yang telah ditambahkan pada sokongannya untuk kontena gaya Docker (terdapat dalam versi beta produk sejak pengeluaran tonggak beta sebelumnya).

Walau bagaimanapun, kehadiran dua pilihan kontena telah menimbulkan banyak persoalan. Apakah perbezaan antara bekas Docker dan bekas Hyper-V baru? Dalam senario mana anda mahu menggunakan satu penyelesaian bekas berbanding yang lain? Adakah kaedah berasingan menggunakan setiap kaedah ini?

Microsoft tidak melakukan tugas yang baik untuk mendokumentasikan dua pilihan kontena ini, dan kontena itu sendiri baru untuk platform Windows Server. Memandangkan dua faktor tersebut, saya ingin mendedikasikan keseluruhan cerita mengenai penyelesaian wadah khusus apa yang disediakan oleh Windows Server 2016 sekarang dalam bentuk pratonton dalam siaran yang tersedia, atau berjanji untuk memberikan sebelum tarikh pengeluaran untuk pengeluaran (RTM), kemungkinan besar di separuh kedua 2016.

Gambaran keseluruhan

Terdapat dua jenis bekas yang terdapat pada Windows Server 2016 pada masa ini: bekas Windows Server dan bekas Hyper-V. Kedua-duanya hanya menyokong Windows Server; contohnya, Linux dan / atau Unix tidak boleh dicampuradukkan.

Bagi pentadbir yang malas seperti saya, marilah kita mengemukakan soalan penting di hadapan: Adakah salah satu daripada dua jenis kontena lebih sukar digunakan berbanding yang lain? Jawapannya adalah tidak.

[Bacaan selanjutnya: Paparan pertama: Jalankan VM di VM dengan bekas Hyper-V]

Jenis kontena dijalankan secara berbeza dan mempunyai tahap pengasingan dan kepercayaan yang berbeza terhadap penyelia. Tetapi pada intinya, ini adalah keputusan waktu penyebaran yang dibuat oleh pemilik mesin fizikal - pemilik hos - mengenai jenis wadah yang akan digunakan, dan semudah memeriksa butang radio yang betul dalam penyihir . Anda hanya memilih antara keduanya pada waktu penciptaan. Keputusan itu mempengaruhi bagaimana Windows Server 2016 - sistem operasi itu sendiri (penyelia, duduk di bahagian bawah semua perkara ini, menggunakan silikon dan besi fizikal) - mengasingkan dan melaksanakan beban kerja dalam setiap bekas.

Oleh itu, setelah anda mengetahui sama ada pilihan kontena adalah jumlah pekerjaan yang sama untuk anda, bagaimana anda membuat keputusan dengan bijak di antara keduanya? Pada dasarnya, ia menjadi kepercayaan: Sekiranya anda mempercayai kod yang berjalan di dalam bekas, maka anda akan memilih wadah Windows Server (baca: tradisional, gaya Docker). Sekiranya anda tidak mempercayai kod tersebut, atau tidak dapat mengesahkannya, atau ia bukan berasal dari pembangun dalaman anda dalam organisasi anda sendiri, maka wadah Hyper-V adalah cara yang tepat. Mari lihat setiap pilihan secara terperinci.

Bekas Windows Server

Bekas Windows Server sebenarnya hanyalah sebahagian daripada projek kontena sumber terbuka Docker, jadi jika anda memikirkan bekas gaya Docker, anda akan memikirkan wadah Windows Server. Bekas ini pada dasarnya adalah jenis mesin maya baru yang dalam beberapa cara mempunyai pengasingan yang lebih sedikit daripada mesin maya tradisional - kerana, dalam banyak kes, perkara-perkara yang biasa dilakukan oleh semua kontena yang berjalan pada hos dikongsi. Antara item yang dikongsi ini adalah fail sistem operasi, direktori dan perkhidmatan yang dijalankan. Ini dilakukan untuk kecekapan yang lebih tinggi, kerana jika anda menjalankan tiga kontena yang berbeza pada hos, semuanya dengan versi Windows Server yang sama dengan tetamu, anda hanya memerlukan satu salinan direktori C: \ Windows pada waktu tertentu.

Perkongsian ini masih memisahkan kontena dari aplikasi tertentu yang mungkin berjalan di host - tetapi juga mengurangkan overhead dan menjadikan kontainer lebih ringan. Anda mempunyai lebih banyak ruang kepala per pelayan yang menjalankan kontena kerana perkongsian ini, berbanding dengan menjalankan mesin maya tradisional, yang lebih terpencil dan tidak berkongsi apa-apa - dan dengan itu cenderung mempunyai banyak pendua. Anda juga biasanya menggunakan wadah Windows Server ketika host dan tetamu anda semua menjalankan sistem operasi yang sama untuk memanfaatkan perkongsian ini; hasilnya, anda tidak dapat menjalankan wadah dengan Pelayan Ubuntu berjalan pada hos Windows Server 2016. (Untuk jenis beban kerja itu, anda akan menggunakan mesin maya tradisional. Bekas tidak sesuai untuk ini. Anda hanya akan menggunakan VM, yang telah disokong di Windows sejak 2008.)

Untuk apa yang bernilai, sekarang dua sistem operasi imej-kontena yang disokong oleh wadah Windows Server adalah Server Core (Windows tanpa antara muka pengguna grafiknya) dan Windows Nano Server, pelayan mikro yang direfleksikan secara radikal sesuai untuk peranan berorientasikan perkhidmatan mikro kecil. (Lebih banyak mengenai perkhidmatan mikro sebentar lagi.)

Jadi bagaimana Docker sesuai dengan semua ini? Docker menyediakan "lapisan pengurusan," jika anda mahu, API dan enjin untuk menguruskan kontena - yang cepat menjadi standard industri, mungkin kerana Docker sendiri adalah sumber terbuka dan digunakan secara meluas. Hub Docker, tersedia untuk digunakan oleh siapa saja di Internet, adalah tempat penyimpanan aplikasi gaya pasar yang benar-benar berjalan di dalam bekas gaya Docker.

Docker juga menyediakan kerangka mental yang boleh digunakan oleh pembangun untuk mendekati operasi sebenar kod mereka dan untuk membina keseluruhan kontena persekitaran yang diperlukan oleh kod mereka untuk dijalankan. Pembangun pada dasarnya membina gambar kontena, yang kemudian dihantar ke operasi dengan mudah, dan berjalan pada dasarnya kerana mereka adalah tetamu di host tersebut. Kemas kini dan pembaikan kod dapat ditangani dengan cepat dan mudah dengan cara yang sama.

Masing-masing gambar bekas ini mungkin berfungsi pada bahagian yang sangat kecil dari keseluruhan aplikasi, yang mengkomponenkan penyelesaiannya dan menjadikannya lebih mudah untuk bekerja di persekitaran yang berorientasikan perkhidmatan mikro. Dari perspektif gambaran besar, bekerja dengan kontena meningkatkan akauntabiliti bagi pemaju untuk menulis kod yang baik yang sesuai dengan persekitaran mereka. Pembangun tidak lagi dapat menulis kod yang berfungsi dengan sempurna pada mesin pengembangan mereka tetapi jatuh ketika digunakan pada perisian pengeluaran - kerana mereka satu dan sama, kod tersebut harus berfungsi di kedua tempat. Ini juga mengurangkan geseran antara operasi dan IT - IT dengan persekitaran pelayannya yang murni dan pembangun yang mengharapkan konfigurasi tertentu tetapi sering kali tidak memiliki kemampuan atau alasan untuk mengubah persekitaran pengeluaran agar sesuai dengan harapan mereka.

Wadah Pelayan Windows gaya Docker ini menunjukkan sejumlah kepercayaan - sama ada anda telah memuat turun aplikasi yang dipercayai dari Docker Hub, atau bahawa pembangun dalaman atau pembangun kontrak anda memberi anda kod menjalankan wadah yang anda percayai. Untuk aplikasi dalam bekas yang mempunyai kod yang dipercayai di dalamnya, bekas Windows Server disyorkan dan sesuai. Perkongsian dan unjuran fail sistem operasi tidak boleh menjadi masalah bagi kod yang dipercayai.

Tetapi apa yang berlaku apabila ada keperluan untuk keselamatan yang lebih sedikit, sedikit pengasingan, dengan kod atau aplikasi yang kurang dipercayai?

Bekas Hyper-V

Itulah ketika anda mula melihat bekas Hyper-V, yang menikahi model pengasingan dan pengabstrakan dari mesin maya tradisional dengan fleksibiliti, gambar dan format penggunaan semula yang mudah dari kontena Windows Server gaya Docker, bersama dengan Docker API dan alat pengurusan yang Saya membincangkan di bahagian sebelumnya.

Mark Russinovich, CTO untuk Microsoft Azure, meletakkannya dengan cara ini dalam entri blog tahun lalu: Wadah Hyper-V "mengasingkan aplikasi dengan jaminan yang berkaitan dengan virtualisasi tradisional, tetapi dengan kemudahan, format gambar dan model pengurusan Windows Server Containers, termasuk sokongan Docker Engine. " Perbezaannya di sini adalah tahap pengasingan: Wadah Hyper-V tidak langsung berkongsi fail, proses dan perkhidmatan sistem operasi dengan host. Sebaliknya, Windows Server membungkus setiap gambar kontena kecil dalam mesin maya overhead yang sangat rendah, yang mencapai batas abstraksi dan kepercayaan yang tidak dilakukan oleh Windows Server container Docker.

Walau bagaimanapun, mesin maya ini, untuk semua maksud dan tujuan, telus kepada pentadbir. Imej kontena itu sendiri yang menjalankan Pelayan Windows memahami bahawa sebenarnya, gambar kontena dan tidak berjalan pada silikon yang tidak terikat, dan dengan itu dapat memanfaatkan pengoptimuman ke OS yang berasal dari kesedaran itu. Tetapi walaupun gambar kontena tersebut lebih terpencil, ia tidak disebarkan secara berbeza daripada bekas Windows Server. Anda masih menggunakan API Docker. Anda masih menggunakan klien Docker. Anda hanya mencentang kotak yang berbeza, tetapi gambar kontena itu sendiri dibina dan dihantar dengan cara yang sama tanpa mengira model pengasingan yang ingin anda gunakan untuk menjalankannya.

Kelemahan pendekatan ini: Terdapat lebih banyak perbelanjaan. Kerana pengasingan tambahan, lebih banyak kod dan proses digandakan. Terdapat juga kenyataan bahawa, walaupun pembungkus mesin maya ringan untuk wadah Hyper-V kecil, ia memang menambah "cukai" pada kos menjalankan gambar kontena. Oleh itu, sementara anda dapat mengisi hos yang kuat yang penuh dengan kontena Windows Server gaya Docker, kontena Hyper-V akan terhad kepada sebilangan kontena yang lebih kecil, semua yang lain sama dengan perkakasan.

Sekali lagi, gambar kontena ini hanya akan menyokong Windows Server. Walaupun terdapat pengasingan, masih ada kesamaan yang dikongsi antara gambar kontena dan sistem operasi host. Oleh itu, jika gambar kontena anda menjalankan Linux, rasa Unix, BSD atau sistem operasi alternatif lain, tiada satu pun ciri Windows Server 2016 baru ini akan menjadi masalah bagi anda.

Intinya: Kod pihak ketiga, kod pasar atau kod yang sebaliknya tidak sepenuhnya dipercayai oleh mana-mana bahagian organisasi anda harus dijalankan dalam bekas Hyper-V. Ini juga merupakan pilihan terbaik untuk awan awam multitenan dan persekitaran lain yang serupa. Anda tidak kehilangan apa-apa kecuali keupayaan dan anda mendapat faedah keselamatan menjadi lebih terpencil.

Bekas dok

Sekarang untuk membuktikan bahawa penjenamaan selalu merupakan bahagian paling sukar dalam teknologi apa pun, izinkan saya memperkenalkan bekas Docker. Di atas, saya menyebut bahawa kontena Windows Server adalah sebahagian daripada projek sumber terbuka Docker. Bekas Docker berbeza dengan bekas Windows Server. Bekas Windows Server boleh menggunakan semua teknologi yang mendasari Docker, tetapi set alat Docker yang ada untuk menguruskan kontena Docker tidak berfungsi (sekurang-kurangnya dalam pelepasan ini) dengan bekas Windows Server. Alat pengurusan kontena Windows Server juga - pada ketika ini, sekumpulan arahan PowerShell - melakukan apa sahaja yang bernilai dengan kontena Docker itu sendiri.

Bekas Docker adalah perkara khusus mereka sendiri, dan sementara kontena Windows Server bertindak seperti wadah Docker dalam kemampuan mereka untuk berkongsi tetapi mengasingkan - itulah sebabnya saya telah merujuknya sebagai kontena Windows Server gaya Docker - mereka bukan bekas Docker . Ini mungkin berubah pada masa akan datang, terutamanya dalam pek perkhidmatan atau pelepasan Windows Server seterusnya, tetapi buat masa ini, ketiga-tiga jenis kontena ini, walaupun semuanya serupa, tetap menjadi konsep yang berbeza. Hanya dua yang kini disokong oleh Windows Server.

Di mana teknologi yang ada sekarang

Buat masa ini, sokongan kontena di Windows Server 2016 sedang dijalankan. Terdapat banyak bahagian yang bergerak ke bekas: Membuang kebergantungan pada fail sistem hos dan sistem operasi, dan versi dan tahap tambalan tertentu; mencapai pengasingan yang betul dan memastikan tidak ada kod yang melanggar batas keselamatan dan kepercayaan itu; membuat cerita pemaju tepat dengan alat dan automasi yang membolehkan pembangun bekerja dengan kontena dalam persekitaran pembangunan bersepadu (IDE) pilihan mereka dan "mengeksport" aplikasinya terus ke kontena; memastikan kontena dapat bergerak naik dan turun ke awan awam dengan lancar; dan banyak lagi.

Dalam semua keadaan ini, masih ada kesilapan dan bug yang boleh diatasi. Sekiranya kontena penting untuk peta jalan penawaran perkhidmatan di dalam kedai anda, maka anda mungkin ingin mula menguji kemampuan wadah Windows Server dan wadah Hyper-V sekarang, dan terutama sekali periksa arahan PowerShell yang tersedia untuk membolehkan kontena dan menguruskannya pada hos Windows Server 2016.

Walau bagaimanapun, jika kontena adalah pilihan yang baik tetapi bukan yang mesti dimiliki oleh organisasi anda, maka cadangan yang dimaklumkan oleh saya adalah untuk tidak mencuba apa-apa kecuali penerokaan yang paling tidak asas dengan menggunakan Technical Preview 4 bit. Masih terlalu banyak ketuat - termasuk kesalahan fatal dan bug yang disebutkan sebelumnya - untuk benar-benar mendapatkan gambaran yang padu tentang apa yang berlaku.

Sokongan kontena akan menjadi tambahan yang menarik untuk platform Windows. Masih banyak kisah yang masih ada untuk ditulis dan diceritakan.

Kisah ini, "Containers in Windows Server 2016: Apa yang perlu anda ketahui" pada asalnya diterbitkan oleh Computerworld.