← Semua soalan
Apakah Docker dan bagaimana ia berfungsi?
SeringPemulaDevOps

Apakah Docker dan bagaimana ia berfungsi?

Jawapan ringkas
Docker ialah platform terbuka untuk pembungkusan dan menjalankan aplikasi sebagai bekas: proses terpencil yang berkongsi kernel Linux hos (melalui ruang nama dan cgroup) bukannya memerlukan mesin maya penuh. Ia menggunakan model pelayan pelanggan: the Pelanggan docker menghantar arahan melalui REST API kepada daemon dockerd, yang membina imej dan menjalankan bekas daripadanya.

Mengapa ia wujud. Docker membenarkan anda membungkus aplikasi dengan semua kebergantungannya (perpustakaan, konfigurasi, masa jalan) ke dalam satu artifak — imej — dan menjalankannya secara sama pada komputer riba pembangun, dalam CI dan dalam pengeluaran. Ini menyelesaikan masalah klasik "berfungsi pada mesin saya".

Bekas lwn. mesin maya. VM memayakan perkakasan dan menghantar keseluruhan OS tetamu dengan kernelnya sendiri. Bekas ialah proses terpencil yang menggunakan inti hos. Akibatnya, bekas menjadi lebih ringan, bermula dalam pecahan sesaat dan menggunakan lebih sedikit sumber. Tetapi bekas bukan bukan VM ringan: ia terikat pada kernel hos dan sempadan pengasingannya lebih lemah daripada VM. VM mempunyai pengasingan yang dikuatkuasakan oleh perkakasan, manakala kelemahan dalam kernel yang dikongsi berpotensi dapat dilepaskan daripada bekas — itulah pertukaran untuk kelajuan dan ketumpatan. Hos mesti sepadan dengan jenis bekas: Bekas Linux memerlukan kernel Linux, bekas Windows memerlukan kernel Windows. Pada macOS dan Windows, Docker Desktop secara telus menjalankan VM Linux kecil (cth. melalui WSL2), jadi bekas Linux di sana berkongsi kernel VM itu, bukan kernel OS anda.

Seni bina (pelayan-pelanggan). Menurut dokumentasi Docker:

  • Klien docker ialah cara utama pengguna berinteraksi dengan Docker; arahan seperti docker run dihantar kepada daemon.
  • dockerd daemon "melakukan pengangkatan berat" membina, menjalankan dan mengedarkan bekas serta mengurus objek seperti imej, bekas, rangkaian dan volum.
  • Pelanggan bercakap dengan daemon melalui REST API melalui soket UNIX atau antara muka rangkaian, supaya mereka boleh berjalan pada mesin yang berbeza.
  • pendaftaran menyimpan imej; yang awam lalai ialah Docker Hub.

Imej dan bekas. Analogi berguna: imej adalah seperti kelas (atau atur cara pada cakera), dan bekas adalah contoh daripadanya (proses berjalan); anda boleh memulakan banyak bekas dari satu imej.

  • imej ialah templat baca sahaja dengan arahan untuk membuat bekas, dibina daripada lapisan. Ia ditakrifkan oleh Dockerfile; apabila anda menukarnya, hanya lapisan yang diubah itu dibina semula.
  • bekas ialah contoh imej yang boleh dijalankan. Di atas lapisan baca sahaja imej itu ia menambah lapisan boleh tulis nipis (salin atas tulis); apa-apa yang ditulis di sana hilang apabila bekas dialih keluar — itulah sebabnya data berterusan memerlukan volum.

Cara pengasingan berfungsi (di bawah hud). dockerd tidak memanggil kernel secara langsung — ia mewakilkan pengurusan kitaran hayat kontena kepada containerd, yang menggunakan masa jalan OCI; dalam Docker lalai ialah runc, tetapi masa jalan boleh dipasang (crun, gVisor, Kata, dll.). Pengasingan sebenar datang daripada ciri kernel Linux:

  • ruang nama mengasingkan sumber (setiap halaman man7 terdapat 8 jenis: PID, rangkaian, lekap, UTS, IPC, pengguna, cgroup, masa). Sesuatu proses hanya "melihat" PIDnya sendiri, susunan rangkaiannya sendiri dan sebagainya.
  • ckumpulan (kumpulan kawalan) had dan akaun untuk penggunaan sumber (CPU, memori, I/O).

Susulan biasa. Lapisan imej dicache; docker compose menjalankan aplikasi berbilang bekas; data berterusan melalui volum (bekas adalah fana secara lalai); dan OCI menyeragamkan format imej (spesifikasi imej), masa jalan (spesifikasi masa jalan) dan protokol pengedaran pendaftaran (spesifikasi pengedaran) — ketiga-tiga spesifikasi ini memastikan ekosistem saling beroperasi.

DockerKontena

Muat turun sekarang dan cuba secara percuma untuk tugasan anda!

Muat turun untuk Windows
10 15 kredit percuma • Kad kredit tidak diperlukanVersi: Memuatkan…

Tanpa pemasangan - muat turun dan jalankan. Tanpa pendaftaran - log masuk dengan Google.