Contoh FreeBSD Jails atau Docker

18

Apa perbedaan utama antara penjara di FreeBSD dan Docker di Linux? Apakah yang satu jauh lebih aman atau lebih berkinerja daripada yang lain? Penjara jauh lebih tua dari contoh Docker sehingga kode itu sendiri dapat dianggap lebih aman. Tapi penjara tidak pernah "tertangkap" jadi mungkin mereka tidak sebagus contoh Docker? Atau apakah itu hanya karena Linux jauh lebih populer daripada FreeBSD?

Simba
sumber

Jawaban:

24

Saya akan membahas beberapa aspek dari penjara FreeBSD dan Linux Docker, tentang bagaimana mereka mirip dan bagaimana mereka berbeda.

  • keduanya melayani tujuan yang sama: ini merupakan implementasi dari virtualisasi ringan, ketika Anda menjalankan aplikasi dalam kompartemen yang terpisah dan terisolasi di bawah kernel yang sama, dan di sini kesamaan berakhir, dan perbedaan dimulai
  • Docker adalah alat yang digunakan terutama untuk menjalankan gambar biner siap pakai yang dapat diperoleh dari berbagai repositori publik atau pribadi. Kebanyakan orang menggunakannya dengan cara ini. Lebih sedikit orang membangun sendiri dan mengunggah ke dalam repositori tersebut.
  • Penjara FreeBSD lebih mirip LXC di Linux: ini adalah metode membuat wadah Anda dari awal. Anda membuatnya, menginstal perangkat lunak ke dalamnya, dan itu cukup banyak - itu dapat diperlakukan sebagai FreeBSD di dalam FreeBSD. Tidak ada cara mudah untuk mengekspor wadah itu sebagai satu perangkat lunak, seperti di Docker. Jadi hampir semua orang yang menggunakan FreeBSD, au contraire, selalu membuat sendiri FreeBSD di dalam wadah dari awal (yaitu dari sistem basis yang diinstal), menginstal perangkat lunak dari sistem FreeBSD Ports atau dari sumber. Penjara FreeBSD karenanya kurang ramah, dan memiliki biaya penggunaan awal yang lebih tinggi.
  • dengan cara yang sama seperti wadah LXC persisten, penjara FreeBSD juga gigih. Semua perubahan tetap utuh di antara sepatu boot. Seperti yang saya katakan, itu hanya sepotong OS di dalam OS yang sama (meskipun versi perangkat lunak pengguna mungkin berbeda sampai ABI dipertahankan dalam kernel FreeBSD). Ini berarti Anda tidak dapat melakukan perubahan - perubahan tersebut dilakukan setelah dibuat.
  • dari semua hal di atas jelas mengapa wadah FreeBSD tidak dapat memiliki lapisan orkestrasi yang sama, seperti Docker: tidak ada port yang mempublikasikan, tidak ada volume, tidak ada tautan atau meta-koneksi antara penjara yang berbeda. Hanya antarmuka yang diberikan oleh OS jaringan: soket jaringan, soket unix, titik pemasangan umum.
  • tidak ada batasan, tentu saja, tentang siapa yang dapat berkomunikasi dengan siapa di dalam penjara FreeBSD, karena tidak ada di Docker.
  • Anda dapat menjalankan gambar buruh pelabuhan asli di FreeBSD, karena setidaknya ada sebagian dukungan dari buruh pelabuhan di bawah FreeBSD, tetapi, karena Linux gratis, saya sangat menyarankan untuk tidak melakukannya (dan saya benar-benar mencintai FreeBSD), karena mereka akan dijalankan melalui kompatibilitas Linux layer (disediakan dengan modul kernel FreeBSD) yang menyediakan beberapa batasan yang diketahui.
drookie
sumber
Untuk informasi lebih lanjut tentang buruh pelabuhan di FreeBSD. Dulu bekerja di dalam penjara (bayangkan isolasi ganda :)), itu dimungkinkan sebagai port oleh pengembang utama FreeNAS karena mereka ingin menggunakannya pada distro itu. Inilah satu artikel dari mereka yang membicarakannya dan halaman wiki lama untuk itu . Sejak itu, mereka berhenti memeliharanya dan sepertinya tidak berfungsi lagi. Lebih banyak untuk mengikuti di komentar berikutnya.
Vrakfall
Ini adalah posting forum yang terakhir berbicara tentang status Docker di FreeBSD . Alat peraga untuk Phishfry di sana untuk beberapa info yang saya jatuhkan di sini. Masih mungkin untuk menggunakan buruh pelabuhan di FreeBSD dengan menjalankannya di Linux tervirtualisasi (bhyve, virtualbox, dll ...) dan menggunakan port khusus klien , yang masih dipertahankan dan berfungsi, untuk terhubung dengannya. Bagaimanapun boot2docker awalnya dibuat untuk menggunakan buruh pelabuhan seperti itu di MacOS.
Vrakfall
Dan kita tahu MacOS adalah port BSD (memalukan, batuk , ini pendapat saya) . Tetapi semua itu, tentu saja, hanya untuk lingkungan pengembangan dan sama sekali tidak dapat digunakan dalam produksi. Ini untuk mereka yang ingin terus bekerja di FreeBSD dan dapat mengembangkan hal-hal buruh pelabuhan untuk pekerjaan mereka / hobi / apa pun.
Vrakfall
Oh dan saya lupa mengatakan, tetapi Anda menyebutkannya, docker-freebsdport lama memang menggunakan Linuxulator FreeBSD .
Vrakfall
Bukan hanya karena saya ingin menjalankan gambar publik. Misalnya, jika saya tidak ingin menghabiskan waktu berjam-jam untuk mempelajari keamanan, saya naik ke dockerhub dan menulis dalam "hardened": hub.docker.com/search?q=hardened&type=image dan menjalankan sesuatu dari sana. Ini sangat meningkatkan produktivitas dibandingkan dengan membangun wadah FreeBSD saya sendiri dari awal tanpa menjadi ahli keamanan. Tetapi jika Anda memiliki alternatif solusi yang sama cepatnya, silakan bagikan! :-)
inf3rno