Docker
Apa itu Docker?
Kata "Docker" mengacu pada beberapa hal, termasuk proyek komunitas open source; alat dari proyek open source; Docker Inc., perusahaan yang utamanya mendukung proyek itu; dan alat yang didukung perusahaan secara resmi. Fakta bahwa teknologi dan perusahaan memiliki nama yang sama dapat membingungkan.
Berikut penjelasan singkatnya:
Perangkat lunak TI "Docker" adalah teknologi penampung yang memungkinkan pembuatan dan penggunaan wadah Linux® .
The komunitas open source Docker bekerja untuk meningkatkan teknologi ini untuk menguntungkan semua pengguna.
Perusahaan, Docker Inc. , dibangun berdasarkan hasil kerja komunitas Docker, membuatnya lebih aman, dan membagikan kemajuan tersebut kembali ke komunitas yang lebih besar. Ini kemudian mendukung teknologi yang ditingkatkan dan diperkuat untuk pelanggan perusahaan.
Dengan Docker, Pengguna dapat memperlakukan container seperti mesin virtual modular yang sangat ringan. Dan Pengguna mendapatkan fleksibilitas dengan container tersebut — Pengguna dapat membuat, menerapkan, menyalin, dan memindahkannya dari lingkungan ke lingkungan, yang membantu mengoptimalkan aplikasi Pengguna untuk cloud .
Bagaimana cara kerja Docker?
Teknologi Docker menggunakan kernel Linux dan fitur-fitur kernel, seperti Cgroups dan namespace , untuk memisahkan proses sehingga dapat berjalan secara independen. Kemandirian ini adalah tujuan container — kemampuan untuk menjalankan banyak proses dan aplikasi secara terpisah satu sama lain untuk memanfaatkan infrastruktur Pengguna dengan lebih baik sambil mempertahankan keamanan yang Pengguna miliki dengan sistem terpisah.
Alat kontainer, termasuk Docker, menyediakan model penerapan berbasis gambar. Ini memudahkan untuk berbagi aplikasi, atau kumpulan layanan, dengan semua dependensinya di berbagai lingkungan. Docker juga mengotomatiskan penerapan aplikasi (atau kumpulan proses gabungan yang membentuk aplikasi) di dalam lingkungan container ini.
Alat-alat ini dibangun di atas wadah Linux — yang membuat Docker ramah pengguna dan unik — memberi pengguna akses yang belum pernah terjadi sebelumnya ke aplikasi, kemampuan untuk menerapkan dengan cepat, dan mengontrol versi dan distribusi versi.
Container Docker vs. Linux: Apakah ada perbedaan?
Meski terkadang bingung, Docker tidak sama dengan container Linux tradisional. Teknologi Docker pada awalnya dibangun di atas teknologi LXC — yang diasosiasikan oleh kebanyakan orang dengan kontainer Linux "tradisional" — meskipun sejak dipindahkan dari ketergantungan tersebut. LXC berguna sebagai virtualisasi ringan , tetapi tidak memiliki pengembang atau pengguna yang hebat pengalaman. Teknologi Docker memberikan lebih dari sekadar kemampuan untuk menjalankan container — ini juga memudahkan proses pembuatan dan pembuatan container, pengiriman gambar, dan pembuatan versi gambar, antara lain.
Kontainer Linux tradisional menggunakan sistem init yang dapat mengelola banyak proses. Artinya, seluruh aplikasi dapat berjalan sebagai satu. Teknologi Docker mendorong aplikasi untuk dipecah menjadi proses terpisah dan menyediakan alat untuk melakukannya. Pendekatan granular ini memiliki kelebihan.
Keuntungan dari kontainer Docker
Modularitas
Pendekatan Docker untuk containerization berfokus pada kemampuan untuk menghapus sebagian aplikasi untuk diperbarui atau diperbaiki, tanpa harus menghapus seluruh aplikasi. Selain pendekatan berbasis layanan mikro ini, Pengguna dapat berbagi proses di antara banyak aplikasi dengan cara yang sama seperti yang dilakukan oleh arsitektur berorientasi layanan (SOA).
Lapisan dan kontrol versi gambar
Setiap file gambar Docker terdiri dari serangkaian lapisan yang digabungkan menjadi satu gambar. Lapisan dibuat saat gambar berubah. Setiap kali pengguna menentukan perintah, seperti jalankan atau salin , lapisan baru akan dibuat.
Docker menggunakan kembali lapisan ini untuk membangun wadah baru, yang mempercepat proses pembangunan. Perubahan menengah dibagikan di antara gambar, yang selanjutnya meningkatkan kecepatan, ukuran , dan efisiensi. Yang juga melekat pada layering adalah kontrol versi: Setiap kali ada perubahan baru, pada dasarnya Pengguna memiliki changelog bawaan, yang memberi Pengguna kontrol penuh atas gambar container Pengguna.
Rollback
Mungkin bagian terbaik tentang layering adalah kemampuan untuk memutar kembali. Setiap gambar memiliki lapisan. Tidak suka iterasi gambar saat ini? Kembalikan ke versi sebelumnya. Ini mendukung pendekatan pengembangan yang gesit dan membantu membuat integrasi dan penerapan berkelanjutan (CI / CD) menjadi kenyataan dari perspektif alat.
Penyebaran cepat
Menyiapkan perangkat keras baru, berjalan, disediakan, dan tersedia biasanya membutuhkan waktu berhari-hari, dan tingkat upaya serta biaya tambahan itu memberatkan. Kontainer berbasis Docker dapat mengurangi penerapan menjadi beberapa detik. Dengan membuat wadah untuk setiap proses, Pengguna dapat dengan cepat membagikan proses tersebut dengan aplikasi baru. Dan, karena sistem operasi tidak perlu melakukan booting untuk menambah atau memindahkan container, waktu penerapan jauh lebih singkat. Dipasangkan dengan waktu penerapan yang lebih singkat, Pengguna dapat dengan mudah dan hemat biaya membuat dan menghancurkan data yang dibuat oleh penampung Pengguna tanpa khawatir.
Jadi, teknologi Docker adalah pendekatan berbasis layanan mikro yang lebih terperinci, dapat dikontrol, dan lebih mengutamakan efisiensi.
Apakah ada batasan untuk menggunakan Docker?
Docker, dengan sendirinya, dapat mengelola satu kontainer. Saat Pengguna mulai menggunakan lebih banyak container dan aplikasi dalam container, dipecah menjadi ratusan bagian, pengelolaan dan orkestrasi bisa menjadi sulit. Akhirnya, Pengguna perlu mengambil langkah mundur dan mengelompokkan container untuk memberikan layanan — jaringan, keamanan, telemetri, dan lainnya — di semua container Pengguna. Di situlah Kubernetes berperan.
Dengan Docker, Pengguna tidak mendapatkan fungsionalitas mirip UNIX yang sama seperti yang Pengguna dapatkan dengan container Linux tradisional. Ini termasuk kemampuan untuk menggunakan proses seperti cron atau syslog dalam container, bersama aplikasi Pengguna. Ada juga batasan pada hal-hal seperti membersihkan proses cucu setelah Pengguna menghentikan proses anak — sesuatu yang secara inheren ditangani oleh container Linux tradisional. Kekhawatiran ini dapat dikurangi dengan memodifikasi file konfigurasi dan menyiapkan kemampuan ini dari awal - tetapi itu mungkin tidak terlihat pada pPenggunangan pertama.
Selain itu, ada subsistem dan perangkat Linux lain yang tidak memiliki namespace. Ini termasuk perangkat SELinux , Cgroups, dan / dev / sd *. Ini berarti bahwa jika penyerang mendapatkan kendali atas subsistem ini, host akan dikompromikan. Agar tetap ringan, berbagi kernel host dengan container membuka kemungkinan kerentanan keamanan ini . Ini berbeda dari mesin virtual, yang jauh lebih ketat dipisahkan dari sistem host.
Apakah kontainer Docker benar-benar aman?
The Docker daemon juga dapat menjadi perhatian keamanan. Untuk menggunakan dan menjalankan container Docker, kemungkinan besar Pengguna akan menggunakan daemon Docker, runtime persisten untuk container. Daemon Docker memerlukan hak akses root, jadi perhatian khusus harus diberikan terkait siapa yang mendapatkan akses ke proses ini dan di mana proses tersebut berada. Misalnya, daemon lokal memiliki permukaan serangan yang lebih kecil daripada yang hidup di lokasi yang lebih publik, seperti server web.
Comments
Post a Comment