Apa hubungan antara OS host buruh pelabuhan dan OS gambar dasar penampung?

122

Saya tidak yakin apakah saya mengajukan pertanyaan yang benar ... tetapi sementara saya telah membaca semua buruh pelabuhan yang bisa saya dapatkan, saya melihat bahwa saya dapat menginstal Docker di Ubuntu 12.04 (misalnya) dan kemudian saya dapat menginstal wadah Fedora atau versi lain dari ubuntu? (ada contoh di mana pengguna memasang busybox di penampung.)

Dan tentu saja saya bisa salah sepenuhnya.

Tapi ekspektasi saya bahwa ada koneksi singkat antara sistem dasar dan container.

disajikan kembali: apa hubungan antara OS host dan OS gambar dasar penampung?

Richard
sumber

Jawaban:

100

Seperti yang disebutkan oleh BraveNewCurrency, satu-satunya hubungan antara OS host dan penampung adalah Kernel.

Ini adalah salah satu perbedaan utama antara buruh pelabuhan dan mesin virtual 'biasa', tidak ada overhead, semuanya berlangsung langsung di dalam kernel host.

Inilah sebabnya mengapa Anda hanya dapat menjalankan distribusi / binari berbasis Linux di dalam penampung. Jika Anda ingin menjalankan sesuatu yang lain, itu bukan tidak mungkin, tetapi Anda memerlukan semacam virtualisasi di dalam container (qemu, kvm, dll.)

Docker mengelola gambar yang merupakan representasi sistem file. Anda dapat menginstal distribusi linux apa pun atau menggunakan binari.

Memang, untuk kenyamanan contoh, kami sering mengandalkan gambar dasar, tetapi Anda juga dapat membuat gambar Anda tanpa pustaka / binari distribusi. Dengan begitu Anda akan memiliki wadah yang sangat kecil namun fungsional.

Satu hal lagi tentang distribusi: karena kernel masih merupakan kernel dari host, Anda tidak akan memiliki modul / patch kernel khusus yang disediakan oleh distribusi.

creack
sumber
2
jadi jika OS host adalah Ubuntu maka containernya juga akan menjadi Ubuntu?
Richard
21
Kernel penampung akan menjadi yang dari ubuntu, tetapi tidak lebih. Anda dapat dengan mudah menjalankan centos, archlinux, debian atau distribusi berbasis linux lainnya sebagai kontainer.
Creack
37
Meskipun informasi ini dapat dinyatakan secara langsung / tidak langsung di situs buruh pelabuhan, saya merasa mereka harus membuat ini sedikit lebih jelas. Saya telah bekerja dengan cara saya melalui beranda, ikhtisar, tutorial interaktif, dan sebagian besar tutorial dasar. Meskipun demikian, saya bingung tentang topik ini, dan mulai berasumsi bahwa kinerja terbaik dari buruh pelabuhan (berdasarkan diagram arsitektur dari situs) akan memerlukan kecocokan pada OS host dan penampung. Saya baru mengenal konsep "kernel linux" jadi ini tidak langsung terlihat jelas bagi saya. Mengetahui hal ini secara instan membuat buruh pelabuhan ganda sebagai orang yang buruk.
ctrlplusb
2
Docker adalah proyek yang cukup kompleks yang memanfaatkan fitur-fitur canggih. Di beberapa titik, kami menganggap pengguna memiliki beberapa pengetahuan seperti perbedaan antara sistem operasi dan distribusi. Jika menurut Anda itu akan menambah nilai, dokumentasinya adalah open source dan Anda dapat mengirimkan permintaan pull.
Creack
3
Ini sepertinya menunjukkan bahwa hanya bagian ruang pengguna dari sebuah OS (perpustakaan, perintah, aplikasi) yang dapat dimasukkan ke dalam kontainer. Jika aplikasi membutuhkan revisi kernel yang berbeda (misalnya 3.10 vs. 4.9) maka mungkin tidak dapat dijalankan dalam wadah. Apakah itu benar?
David C.
23

Secara harfiah, satu-satunya kesamaan yang mereka miliki adalah kernel. Seluruh dunia mereka (sistem file) ada di kontainer buruh pelabuhan.

BraveNewCurrency
sumber
1

Ada pertimbangan lain - meskipun kedua kernel sama, ada masalah jika OS host tidak mendukung Docker, seperti RHEL 6: https://access.redhat.com/solutions/1378023

Jadi, Anda tidak akan dapat memutar container di RHEL 6, meskipun image tersebut adalah gambar Linux.

flow2k
sumber