Mengapa anda mesti menggunakan Docker dan bekas

Sebuah buku yang diterbitkan pada tahun 1981, berjudul  Nailing Jelly to a Tree , menggambarkan perisian sebagai "tidak jelas dan sukar untuk dipegang." Itu berlaku pada tahun 1981, dan tidak kurang benarnya hampir empat dekad sejak itu. Perisian, sama ada aplikasi yang anda beli atau yang anda buat sendiri, tetap sukar digunakan, sukar dikendalikan, dan sukar dijalankan.

Bekas dok menyediakan cara untuk memahami perisian. Anda dapat menggunakan Docker untuk menyelesaikan aplikasi sedemikian rupa sehingga masalah penyebaran dan waktu prosesnya — bagaimana untuk mengeksposnya di rangkaian, cara mengurus penggunaan penyimpanan dan memori dan I / O, cara mengendalikan izin akses — ditangani di luar aplikasi itu sendiri, dan dengan cara yang konsisten di semua aplikasi "kontena". Anda boleh menjalankan wadah Docker anda pada mana-mana hos yang kompatibel dengan OS (Linux atau Windows) yang telah dipasang waktu run Docker.

Docker menawarkan banyak faedah lain selain enkapsulasi, pengasingan, mudah alih dan kawalan yang berguna ini. Bekas dermaga kecil (megabait). Mereka bermula dengan serta-merta. Mereka mempunyai mekanisme bawaan mereka sendiri untuk penggunaan versi dan penggunaan semula komponen. Mereka dapat dikongsi dengan mudah melalui Docker Hub awam atau repositori peribadi.

Dalam artikel ini saya akan menerangkan bagaimana kontainer Docker mempermudah pembuatan dan penyebaran perisian — permasalahan yang ditangani oleh wadah, bagaimana mereka menanganinya, kapan mereka adalah jawapan yang tepat untuk masalah tersebut, dan ketika tidak.

Sebelum bekas Docker

Selama bertahun-tahun sekarang, perisian perusahaan biasanya digunakan sama ada pada "bare metal" (iaitu dipasang pada sistem operasi yang mempunyai kawalan penuh ke atas perkakasan yang mendasari) atau di mesin maya (misalnya dipasang pada sistem operasi yang berkongsi perkakasan yang mendasari dengan sistem operasi "tetamu" yang lain). Secara semula jadi, pemasangan pada logam kosong menjadikan perisian sangat sukar untuk bergerak dan sukar untuk dikemas kini — dua kekangan yang menyukarkan IT untuk bertindak balas dengan pantas terhadap perubahan keperluan perniagaan.

Kemudian virtualisasi datang. Platform virtualisasi (juga dikenali sebagai "hypervisors") membolehkan banyak mesin maya berkongsi satu sistem fizikal, setiap mesin maya meniru tingkah laku keseluruhan sistem, lengkap dengan sistem operasi, penyimpanan, dan I / O sendiri, secara terpencil . IT kini dapat merespon dengan lebih berkesan terhadap perubahan dalam keperluan perniagaan, kerana VM dapat diklon, disalin, dimigrasi, dan berputar naik atau turun untuk memenuhi permintaan atau memulihara sumber daya.

Mesin maya juga membantu mengurangkan kos, kerana lebih banyak VM dapat disatukan ke mesin fizikal yang lebih sedikit. Sistem lama yang menjalankan aplikasi lama dapat diubah menjadi VM dan dinyahaktifkan secara fizikal untuk menjimatkan lebih banyak wang.

Tetapi mesin maya masih mempunyai banyak masalah. Mesin maya berukuran besar (gigabait), masing-masing mengandungi sistem operasi penuh. Hanya begitu banyak aplikasi maya yang dapat digabungkan ke dalam satu sistem. Menyediakan VM masih memerlukan banyak masa. Akhirnya, mudah alih VM adalah terhad. Selepas titik tertentu, VM tidak dapat memberikan jenis kelajuan, kelincahan, dan penjimatan yang dituntut oleh perniagaan bergerak pantas.

Keuntungan kontena Docker

Kontena berfungsi sedikit seperti VM, tetapi dengan cara yang lebih spesifik dan terperinci. Mereka mengasingkan satu aplikasi dan kebergantungannya - semua perpustakaan perisian luaran yang perlu dijalankan oleh aplikasi - baik dari sistem operasi yang mendasari dan dari bekas lain. Semua aplikasi berbentuk kontainer berkongsi satu sistem operasi biasa (sama ada Linux atau Windows), tetapi mereka dikategorikan satu sama lain dan dari sistem pada umumnya.

Kelebihan kontena Docker muncul di banyak tempat. Berikut adalah beberapa kelebihan utama Docker dan kontena:

Docker membolehkan penggunaan sumber sistem dengan lebih cekap

Contoh aplikasi yang menggunakan kontena menggunakan memori yang jauh lebih sedikit daripada mesin maya, aplikasi tersebut dimulakan dan berhenti lebih cepat, dan aplikasi tersebut dapat dibungkus dengan lebih padat pada perkakasan hos mereka. Semua ini berjumlah kurang perbelanjaan untuk IT.

Penjimatan kos akan berbeza-beza bergantung pada aplikasi yang sedang dimainkan dan seberapa intensif sumbernya, tetapi kontena selalu berfungsi lebih efisien daripada VM. Anda juga dapat menjimatkan kos lesen perisian, kerana anda memerlukan lebih sedikit contoh sistem operasi untuk menjalankan beban kerja yang sama.

Docker membolehkan kitaran penghantaran perisian lebih cepat

Perisian perusahaan mesti bertindak balas dengan cepat terhadap keadaan yang berubah. Ini bermaksud skala yang mudah untuk memenuhi permintaan dan pengemaskinian yang mudah untuk menambahkan ciri baru seperti yang diperlukan oleh perniagaan. 

Wadah Docker mempermudah untuk memasukkan versi perisian baru, dengan ciri perniagaan baru, ke dalam pengeluaran dengan cepat — dan dengan cepat kembali ke versi sebelumnya jika anda perlu. Mereka juga mempermudah menerapkan strategi seperti penerapan biru / hijau.

Docker membolehkan mudah alih aplikasi

Di mana anda menjalankan aplikasi perusahaan penting - di belakang firewall, demi menjaga hal-hal yang dekat dan selamat; atau keluar di awan awam, untuk akses awam yang mudah dan keanjalan sumber yang tinggi. Oleh kerana kontena Docker merangkumi semua yang perlu dijalankan oleh aplikasi (dan hanya perkara-perkara itu), mereka membenarkan aplikasi ditutup dengan mudah di antara persekitaran. Mana-mana hos dengan runtime Docker dipasang — baik komputer riba pemaju atau instance cloud awam — dapat menjalankan wadah Docker.

Docker bersinar untuk seni bina perkhidmatan mikro

Bekas Docker yang ringan, mudah alih, dan serba lengkap menjadikannya lebih mudah untuk membina perisian mengikut pemikiran masa depan, supaya anda tidak berusaha menyelesaikan masalah esok dengan kaedah pembangunan semalam.

Salah satu kontena corak perisian yang lebih mudah adalah perkhidmatan mikro, di mana aplikasi terdiri dari banyak komponen yang digabungkan longgar. Dengan menguraikan aplikasi tradisional, "monolitik" ke dalam perkhidmatan yang berasingan, perkhidmatan mikro membolehkan bahagian yang berlainan dari aplikasi lini perniagaan ditingkatkan, diubah suai, dan diservis secara berasingan - oleh pasukan yang berasingan dan pada garis masa yang berasingan, jika sesuai dengan keperluan perniagaan. 

Kontena tidak diperlukan untuk melaksanakan perkhidmatan mikro, tetapi sangat sesuai dengan pendekatan perkhidmatan mikro dan proses pengembangan tangkas secara umum.

Masalah Bekas dok tidak dapat diselesaikan

Perkara pertama yang perlu diingat tentang kontena adalah nasihat yang sama yang berlaku untuk teknologi perisian apa pun: Ini bukan peluru perak. Bekas dok dengan sendirinya tidak dapat menyelesaikan setiap masalah. Khususnya:

Docker tidak akan menyelesaikan masalah keselamatan anda

Perisian dalam bekas boleh menjadi lebih selamat secara lalai daripada perisian yang dijalankan pada logam kosong, tetapi seperti mengatakan rumah dengan pintunya terkunci lebih selamat daripada rumah dengan pintunya tidak terkunci. Ia tidak mengatakan apa-apa mengenai keadaan kejiranan, kehadiran barang berharga yang kelihatan menggoda pencuri, rutin orang-orang yang tinggal di sana, dan sebagainya. Kontainer dapat menambahkan lapisan keamanan pada aplikasi, tetapi hanya sebagai bagian dari program umum untuk mengamankan aplikasi dalam konteks.

Docker tidak mengubah aplikasi secara ajaib menjadi perkhidmatan mikro

Sekiranya anda menggunakan aplikasi yang ada, itu dapat mengurangkan penggunaan sumbernya dan menjadikannya lebih mudah digunakan. Tetapi ia tidak mengubah reka bentuk aplikasi secara automatik , atau bagaimana ia berinteraksi dengan aplikasi lain. Manfaat itu hanya datang melalui masa dan usaha pemaju, bukan hanya mandat untuk memindahkan semuanya ke dalam bekas.

Letakkan aplikasi gaya monolitik atau SOA lama di dalam bekas, dan akhirnya anda akan menggunakan aplikasi lama di dalam bekas. Itu tidak menjadikannya lebih berguna untuk pekerjaan anda; jika ada, ia mungkin menjadikannya kurang berguna. 

Docker bukan pengganti mesin maya

Satu mitos bekas yang berterusan adalah bahawa ia menjadikan VM usang. Banyak aplikasi yang digunakan untuk menjalankan dalam VM boleh dipindahkan ke dalam bekas, tetapi itu tidak bermakna semua daripada mereka boleh atau sepatutnya. Sekiranya anda berada dalam industri dengan keperluan peraturan yang berat, misalnya, anda mungkin tidak dapat menukar bekas untuk VM, kerana VM memberikan lebih banyak pengasingan daripada kontena.

Sarung untuk bekas Docker

Kerja pengembangan perusahaan terkenal kerana tersembunyi dan lambat bertindak balas terhadap perubahan. Pemaju syarikat selalu menghadapi kekangan seperti itu — batasan yang dikenakan oleh IT, tuntutan yang dibuat oleh mereka secara besar-besaran. Docker dan kontena memberi lebih banyak kebebasan kepada pemaju, dan pada masa yang sama menyediakan cara untuk membina aplikasi perniagaan yang bertindak balas dengan cepat terhadap keadaan perniagaan yang berubah.