Apa yang perlu anda ketahui mengenai Docker di Windows

Saya menghabiskan akhir minggu lalu di Monki Gras, sebuah persidangan pemaju di London yang memfokuskan pada pengembangan perisian. Ini adalah acara yang menarik, dan tahun ini memfokuskan kepada cara mengemas perisian

Tidak menghairankan, banyak pembesar suara membicarakan peranan wadah dalam pemancingan dan penghantaran berterusan. Tetapi terdapat kesalahpahaman umum mengenai sokongan Windows untuk kontena, yang umumnya disifatkan sebagai sokongan untuk Docker yang berjalan di Linux VM.

Itu tidak benar: Windows mempunyai teknologi kontena sendiri, berdasarkan Docker tetapi memberikan putaran Microsoft yang unik. Itu mungkin merupakan sumber kekeliruan, dengan Windows 10 menambahkan sokongan untuk subsistem Linux dan Microsoft menambahkan alat Docker ke Windows Server 2016 pada masa yang sama. Kedua-duanya adalah sebahagian daripada pendekatan Microsoft untuk pengembangan aplikasi cloud-native, yang merupakan elemen penting dari platform Azure ke depan.

Komitmen Microsoft terhadap kontena, salah satu perkembangan lintas industri yang paling penting dalam beberapa tahun kebelakangan, tidak seharusnya mengejutkan. Mungkin dianggap sebagai cara terbaik untuk merangkumi seluruh kawasan proses dan ruang nama pengguna untuk mengasingkannya dari kejadian lain yang berjalan di pelayan yang sama, kontena dengan cepat menjadi komponen utama pelaksanaan dan integrasi berterusan. Microsoft telah menerapkan pendekatan ini secara dalaman, dan seperti biasa, alatnya mencerminkan bagaimana Redmond menggunakan perisian dan bagaimana ia membangun aplikasi.

Memahami bekas

Dengan memisahkan perkhidmatan yang digunakan aplikasi dari perkhidmatan yang diperlukan oleh OS, kontena moden telah menjadi alat yang kuat untuk mengemas dan menyebarkan aplikasi di pelayan. Kontena menawarkan mudah dibawa di antara pembangunan, pusat data di tempat, dan awan peribadi, hibrid, dan awam. Aplikasi yang dibungkus dalam wadah bebas dari OS hos, dan aplikasi tersebut dapat dijalankan di mana-mana hos kontena yang serupa tanpa perubahan.

Membungkus aplikasi dalam wadah bermaksud aplikasi itu mudah digunakan bersama dengan semua fail konfigurasi dan kebergantungan yang sesuai: Sekiranya kontena berjalan pada mesin pengembangan atau lulus semua ujian integrasi anda, maka aplikasi itu akan berjalan di pelayan tanpa perubahan. Anda boleh menukar bekas untuk versi baru tanpa mempengaruhi OS yang mendasari, dan anda boleh memindahkan bekas dari pelayan ke pelayan tanpa mempengaruhi kod anda. Ini adalah titik akhir logik model devops, yang membolehkan anda menggunakan infrastruktur dan aplikasi secara berasingan - dan menguruskannya secara berasingan.

Awalnya teknologi kerangka utama, kontena (atau sekurang-kurangnya bentuk ruang nama dan pengasingan proses yang serupa) dapat dijumpai di banyak OS Unix, termasuk Linux dan Solaris.

Di dalam bekas Windows

Kini, dengan pembebasan Windows Server 2016, Windows mempunyai teknologi kontena tersendiri. Ia didasarkan pada perkhidmatan kontena sumber terbuka Docker yang popular, tetapi menambah sokongan untuk menggunakan baris arahan PowerShell dan untuk pengasingan tambahan dengan kombinasi Nano Server dan Hyper-V Container yang tertumpu pada kontena.

Docker tetap menjadi inti strategi penyusun Microsoft. Alatnya, seperti Swarm and Machine, digunakan secara meluas, dan produk Pusat Datanya dapat menguruskan kedua-dua wadah Windows dan Linux. Anda bahkan boleh menggunakan klien Docker dari shell Bash yang merupakan sebahagian daripada Windows 10, memasangnya di subsistem Windows untuk Linux. Pendekatan itu memerlukan anda menyulap sijil, jadi anda mungkin lebih suka menggunakan aplikasi Windows Docker sebagai alat pengembangan dan pengurusan asas untuk kedua-dua wadah Windows dan Linux anda.

Bekas Windows adalah, seperti banyak fitur Windows Server, peranan yang dapat dipasang sama ada melalui dialog ciri Windows yang sudah biasa atau melalui PowerShell. Mengambil laluan PowerShell paling masuk akal kerana terdapat modul OneGet PowerShell yang memasang kedua-dua ciri bekas Windows dan Docker, dengan hanya satu but semula yang diperlukan untuk memulakan. (Anda juga perlu mengaktifkan virtualisasi Hyper-V jika anda ingin menggunakan bekas Hyper-V.)

Terdapat semangat yang mengejutkan untuk kontena Windows dari kedua-dua pembangun dan pasukan ops; Microsoft telah melaporkan lebih daripada 1 juta muat turun gambar Windows asas dari perpustakaan kontena Docker's Hub sejak Windows Server 2016 menjadi tersedia secara umum.

Membangun dan menggunakan kontena pada Windows

Kontena bukan sahaja alat pelayan; versi Professional dan Enterprise Windows 10 Anniversary Edition juga menyokong kontena. Anda perlu mengaktifkannya dari dialog Ciri Windows, tetapi setelah diaktifkan, anda boleh memasang dan menguruskan bekas Windows pada PC pengembangan menggunakan PowerShell. Kerana Windows 10 hanya menyokong bekas Hyper-V, anda juga perlu memasang Hyper-V.

Setelah bekas Windows diaktifkan, anda perlu memuat turun dan memasang klien Docker Engine dan Docker, dan memasang imej asas yang perlu anda konfigurasikan untuk aplikasi anda.

Imej asas yang dicadangkan Microsoft untuk bekas Windows yang baru dibina adalah Nano Server, implementasi pelayan yang fokus pada cloud dengan jejak rendah. Nano Server masuk akal sebagai pangkalan kontena: Ia kecil dan pantas, tanpa UI, jadi cepat digunakan dan agak selamat.

Satu nota penting: Walaupun anda dapat menggunakannya untuk mengehos waktu berjalan seperti Node.js, Nano Server bertujuan untuk menghoskan aplikasi .Net Core, termasuk ASP.Net Core, jadi anda tidak akan mendapat semua ciri .Net yang biasa . Terdapat banyak perbezaan dari Pelayan Windows yang sudah biasa bahawa mungkin sebaiknya memikirkan bekas Windows yang dihoskan oleh Nano Server sebagai alat untuk aplikasi baru dan bukan sebagai hos untuk kod yang ada.

Perbezaan tersebut menjelaskan mengapa banyak perniagaan menggunakan Windows Server Core sebagai gambar asas. Walaupun lebih besar dan memerlukan waktu lebih lama untuk digunakan daripada Nano Server, Windows Server Core menawarkan sokongan untuk Windows SDK semasa dan pelaksanaan .Net penuh. Jauh lebih mudah untuk memindahkan kod yang ada dengan cepat ke Server Core, memberikan anda pilihan, kerana Lead Program Manager untuk Windows Server dan Hyper-V Containers Taylor Brown menyebutnya, "angkat dan beralih" dari pelayan yang ada ke kontena, sehingga mereka ' boleh digunakan semula di mana sahaja anda mahu. Setelah aplikasi di dalam wadah, pembangun dapat menguraikannya lebih jauh; sebagai contoh, memindahkan penyambung API ke bekas berasaskan Nano Server mereka sendiri untuk memudahkan penyelenggaraan aplikasi.

Sokongan kontena sedang dibina ke dalam alat Windows pada tahap paling rendah, dengan kontena Windows kini menjadi sasaran penyebaran untuk Visual Studio 2017. Anda boleh membina dan menyampaikan aplikasi sebagai wadah, siap untuk diuji. Menjadikan kontena dengan mudah klik tetikus adalah langkah penting.

Dengan Windows Azure tidak lama lagi untuk menyokong virtualisasi bersarang, kemampuan untuk menambahkan lebih banyak pengasingan di awan awam akan membantu industri yang diatur membenarkan pemindahan ke kedua-dua kontena dan ke cloud.