Apa yang perlu Anda ketahui tentang Docker di Windows

Saya menghabiskan akhir minggu lalu di Monki Gras, sebuah konferensi pengembang di London yang berfokus pada kerajinan pengembangan perangkat lunak. Ini adalah acara yang menarik, dan tahun ini berfokus pada cara mengemas perangkat lunak.

Tak heran, banyak pembicara yang membahas tentang peran container di devops dan continuous delivery. Tetapi ada kesalahpahaman umum tentang dukungan Windows untuk container, yang umumnya ditandai sebagai dukungan untuk Docker yang berjalan di VM Linux.

Itu tidak benar: Windows memiliki teknologi kontainernya sendiri, yang dibangun di atas Docker tetapi memberikan putaran unik Microsoft. Itu mungkin sumber kebingungan, dengan Windows 10 menambahkan dukungan untuk subsistem Linux dan Microsoft menambahkan alat Docker ke Windows Server 2016 sekitar waktu yang sama. Keduanya merupakan bagian dari pendekatan Microsoft untuk pengembangan aplikasi cloud-native, yang merupakan elemen kunci dari platform Azure di masa mendatang.

Komitmen Microsoft terhadap kontainer, salah satu perkembangan lintas industri penting dalam beberapa tahun terakhir, seharusnya tidak mengejutkan. Mungkin paling baik dianggap sebagai cara untuk merangkum seluruh lahan pengguna proses dan ruang nama untuk mengisolasinya dari contoh lain yang berjalan di server yang sama, kontainer dengan cepat menjadi komponen kunci pengembang dan implementasi integrasi berkelanjutan. Microsoft telah menjadi pengadopsi cepat pendekatan ini secara internal, dan seperti biasa, alatnya mencerminkan bagaimana Redmond menggunakan perangkat lunak dan bagaimana ia membangun aplikasi.

Memahami wadah

Dengan memisahkan layanan yang digunakan aplikasi dari layanan yang dibutuhkan OS, kontainer modern telah menjadi alat yang ampuh untuk mengemas dan menerapkan aplikasi di server. Container menawarkan portabilitas di antara development, pusat data lokal, dan cloud pribadi, hybrid, dan publik. Aplikasi yang dibungkus dalam penampung tidak bergantung pada OS host, dan dapat berjalan di host penampung yang serupa tanpa perubahan.

Menggabungkan aplikasi dalam sebuah wadah berarti bahwa aplikasi tersebut mudah untuk diterapkan bersama dengan semua file konfigurasi dan dependensi yang sesuai: Jika sebuah wadah berjalan pada mesin pengembangan atau lolos semua tes integrasi Anda, maka itu akan berjalan di server tanpa perubahan apa pun. Anda dapat mengubah penampung untuk versi baru tanpa memengaruhi OS yang mendasarinya, dan Anda dapat memindahkan penampung dari server ke server tanpa memengaruhi kode Anda. Ini adalah titik akhir logis dari model devops, memungkinkan Anda menerapkan infrastruktur dan aplikasi secara terpisah - dan mengelolanya secara terpisah.

Awalnya teknologi mainframe, kontainer (atau setidaknya bentuk namespace dan proses isolasi yang serupa) dapat ditemukan di banyak OS Unix, termasuk Linux dan Solaris.

Di dalam wadah Windows

Sekarang, dengan dirilisnya Windows Server 2016, Windows memiliki teknologi wadahnya sendiri. Ini berbasis di sekitar layanan kontainer Docker open source yang populer, tetapi menambahkan dukungan untuk menggunakan baris perintah PowerShell dan untuk isolasi tambahan dengan kombinasi Nano Server dan Hyper-V Containers yang berfokus pada kontainer.

Docker tetap menjadi inti dari strategi container Microsoft. Alatnya, seperti Swarm dan Mesin, banyak digunakan, dan produk Pusat Data dapat mengelola wadah Windows dan Linux. Anda bahkan dapat menggunakan klien Docker dari shell Bash yang merupakan bagian dari Windows 10, menginstalnya di subsistem Windows untuk Linux. Pendekatan itu memang mengharuskan Anda menyulap sertifikat, jadi Anda mungkin lebih suka menggunakan aplikasi Windows Docker sebagai alat pengembangan dan manajemen dasar untuk wadah Windows dan Linux Anda.

Wadah Windows, seperti banyak fitur Windows Server, adalah peran yang dapat diinstal baik melalui dialog fitur Windows yang sudah dikenal atau melalui PowerShell. Mengambil rute PowerShell paling masuk akal karena ada modul OneGet PowerShell yang menginstal fitur kontainer Windows dan Docker, dengan hanya satu reboot yang diperlukan untuk memulai. (Anda juga harus mengaktifkan virtualisasi Hyper-V jika Anda ingin menggunakan wadah Hyper-V.)

Antusiasme yang luar biasa untuk container Windows baik dari pengembang maupun tim operasi; Microsoft telah melaporkan lebih dari 1 juta unduhan image Windows dasar dari pustaka container Hub Docker sejak Windows Server 2016 tersedia untuk umum.

Membangun dan menerapkan kontainer di Windows

Kontainer bukan hanya alat server; versi Professional dan Enterprise dari Windows 10 Anniversary Edition juga mendukung kontainer. Anda harus mengaktifkannya dari dialog Fitur Windows, tetapi setelah diaktifkan, Anda dapat menginstal dan mengelola wadah Windows pada PC pengembangan menggunakan PowerShell. Karena Windows 10 hanya mendukung wadah Hyper-V, Anda harus menginstal Hyper-V juga.

Setelah penampung Windows diaktifkan, Anda harus mengunduh dan menginstal Mesin Docker dan klien Docker, dan menginstal gambar dasar yang perlu Anda konfigurasikan untuk aplikasi Anda.

Gambar dasar yang disarankan Microsoft untuk container Windows yang baru dibangun adalah Nano Server, implementasi server yang berfokus pada cloud dengan tapak rendah. Nano Server sangat masuk akal sebagai basis penampung: Ini kecil dan cepat, tanpa UI, jadi cepat untuk diterapkan dan relatif aman.

Satu catatan penting: Meskipun Anda dapat menggunakannya untuk menghosting runtime seperti Node.js, Nano Server dimaksudkan untuk menghosting aplikasi .Net Core, termasuk ASP.Net Core, jadi Anda tidak akan mendapatkan semua fitur .Net yang biasa Anda gunakan . Ada cukup banyak perbedaan dari Windows Server yang sudah dikenal sehingga mungkin yang terbaik adalah menganggap wadah Windows yang dihosting Nano Server sebagai alat untuk aplikasi baru daripada sebagai host untuk kode yang ada.

Perbedaan tersebut menjelaskan mengapa banyak bisnis menggunakan Windows Server Core sebagai gambar dasar. Meskipun lebih besar dan membutuhkan waktu lebih lama untuk diterapkan daripada Nano Server, Windows Server Core menawarkan dukungan untuk Windows SDK saat ini dan implementasi .Net penuh. Jauh lebih mudah untuk dengan cepat memindahkan kode yang ada ke Server Core, memberi Anda pilihan untuk, seperti yang disebut oleh Lead Program Manager untuk Windows Server dan Hyper-V Containers Taylor Brown, "mengangkat dan menggeser" dari server yang ada ke container, jadi mereka ' dapat diterapkan kembali di mana pun Anda inginkan. Setelah aplikasi berada dalam sebuah wadah, pengembang dapat menguraikannya lebih lanjut; misalnya, memindahkan konektor API ke wadah berbasis Server Nano mereka sendiri untuk menyederhanakan pemeliharaan aplikasi.

Dukungan kontainer sedang dibangun ke dalam alat Windows pada tingkat yang paling rendah, dengan kontainer Windows sekarang menjadi target penerapan untuk Visual Studio 2017. Anda dapat membangun dan mengirimkan aplikasi sebagai kontainer, siap untuk diuji. Membuat wadah hanya dengan satu klik mouse adalah langkah penting.

Dengan Windows Azure yang akan segera mendukung virtualisasi bertingkat, kemampuan untuk menambahkan lebih banyak isolasi di cloud publik akan membantu industri yang diatur membenarkan perpindahan ke container dan cloud.