Rumah > Artikel > Operasi dan penyelenggaraan > Prinsip imej Docker: sistem fail bersama dan pemahaman berlapis (contoh terperinci)
Artikel ini membawakan anda pengetahuan yang berkaitan tentang sistem fail bersama dan pemahaman berlapis tentang prinsip imej Docker, termasuk isu yang berkaitan dengan sistem fail bersama, struktur hierarki dan amalan berlapis saya harap ia akan membantu semua orang.
Selain itu, bekas Docker yang berbeza boleh berkongsi beberapa lapisan sistem fail asas, dan pada masa yang sama menambah lapisan perubahan unik mereka sendiri, meningkatkan kecekapan storan. AUFS (AnotherUnionFS) yang digunakan dalam Docker ialah sistem fail kesatuan. AUFS menyokong tetapan kebenaran baca sahaja, tulis baca dan boleh putih untuk setiap direktori ahli (serupa dengan cawangan Git Pada masa yang sama, AUFS mempunyai konsep yang serupa dengan hierarki Untuk cawangan Kebenaran baca sahaja boleh diubah suai secara logik (tanpa menjejaskan bahagian baca sahaja). Docker pada masa ini menyokong jenis sistem fail bersama termasuk AUFS, btrfs, vfs dan DeviceMapper. Ciri-ciri: Muatkan berbilang sistem fail pada masa yang sama, tetapi dari luar, hanya satu sistem fail dapat dilihat dengan memuatkan bersama akan menindih setiap lapisan sistem fail, supaya sistem fail akhir akan merangkumi semua asas fail dan direktori.UnionFS (Sistem Fail Kesatuan): Sistem Fail Union (UnionFS) ialah sistem fail berlapis, ringan dan berprestasi tinggi yang menyokong pengubahsuaian pada sistem fail kerana Satu penyerahan boleh digunakan lapisan oleh lapisan, dan direktori yang berbeza boleh dipasang pada sistem fail maya yang sama (satukan beberapa direktori ke dalam sistem fail maya tunggal). Sistem fail Union ialah asas imej Docker. Imej boleh diwarisi melalui lapisan Berdasarkan imej asas (tanpa imej induk), pelbagai imej aplikasi tertentu boleh dihasilkan.
imej asas
Imej asas mempunyai dua makna: (1) ia tidak bergantung pada imej lain dan dibina dari awal; (2) imej lain boleh dikembangkan berdasarkannya. Jadi, apa yang boleh dipanggil imej asas biasanya imej Docker dari pelbagai pengedaran Linux, seperti Ubuntu, Debian, CentOS, dll.imej asas tidak bergantung pada mana-mana imej lain, ia dibina sepenuhnya dari awal dan imej lain dibina di atasnya dibandingkan dengan asas bangunan dan asal usul pencerminan buruh pelabuhan.
Prinsip pemuatan imej Docker
Linux biasa memerlukan dua FS untuk dimulakan dan dijalankan, bootfs rootfs:Imej Docker sebenarnya terdiri daripada lapisan sistem fail Tahap sistem fail ini ialah UnionFS.
bootf (sistem fail but) terutamanya termasuk bpotloader dan kernel, dan bootloader terutamanya Boot memuatkan kernel, Linux akan memuatkan sistem fail bootfs apabila ia mula-mula dimulakan Lapisan bawah imej Docker ialah but. Lapisan ini adalah sama dengan sistem Linux/Unix biasa kami, termasuk pemuat but pemuat but dan kernel kernel. Apabila pemuatan but selesai, keseluruhan kernel berada dalam memori Pada masa ini, hak untuk menggunakan memori telah dipindahkan dari but ke kernel Pada masa ini, sistem juga akan menyahpasang but.
rootfs (sistem fail root), di atas but. Mengandungi direktori dan fail standard seperti /dev, /proc, /bin, /etc dan sebagainya dalam sistem Linux biasa. Roots ialah pelbagai pengedaran sistem pengendalian, seperti Ubuntu, Centos, dll.Mengapa tiada kernel dalam imej Docker?
Memandangkan bekas bermula dan berjalan terus menggunakan kernel hos, ia tidak langsung memanggil perkakasan fizikal, jadi tiada pemacu perkakasan yang terlibat, jadi kernel dan pemacu tidak digunakan. Bagi teknologi mesin maya, setiap mesin maya mempunyai kernel bebasnya sendiri2 Struktur hierarkiImej Docker ialah struktur berlapis, dengan setiap lapisan dibina pada lapisan lain Di atas, untuk mencapai fungsi. daripada menambah kandungan secara berperingkat, imej Docker turut dimuat turun dalam lapisan Ambil muat turun imej redis sebagai contoh:Dari segi saiz imej, imej yang agak kecil hanya melebihi 1KB atau beberapa MB, manakala fail kernel memerlukan beberapa Sepuluh MB, jadi tiada kernel dalam imej Selepas dimulakan sebagai bekas, imej akan terus menggunakan kernel hos, dan imej itu sendiri hanya menyediakan rootfs yang sepadan, iaitu fail ruang pengguna. sistem yang diperlukan untuk operasi biasa sistem, seperti /dev/, /proc, /bin, /etc dan direktori lain, jadi pada dasarnya tiada direktori /boot dalam bekas, dan /boot menyimpan fail dan direktori yang berkaitan dengan isirong.
Seperti yang anda boleh. lihat, imej baharu dijana dengan menindih lapisan imej asas demi lapisan. Setiap kali anda memasang perisian, anda menambah lapisan pada imej sedia ada.
Mengapa imej Docker menggunakan struktur berlapis ini?Faedah terbesar ialah perkongsian sumber. Sebagai contoh, jika berbilang imej dibina daripada imej Pangkalan yang sama, maka hos hanya perlu menyimpan satu imej asas pada cakera, dan hanya satu imej asas perlu dimuatkan ke dalam memori, supaya ia boleh menyediakan semua bekas , dan setiap lapisan imej boleh dikongsi.
Lapisan bekas boleh tulis
Imej docker adalah baca sahaja Apabila bekas bermula, lapisan boleh tulis baharu dimuatkan ke atas Cermin.
Lapisan baharu ini ialah lapisan bekas boleh tulis, dan segala-galanya di bawah bekas dipanggil lapisan cermin.
Docker menggunakan strategi salin atas tulis untuk memastikan keselamatan imej asas, serta prestasi yang lebih tinggi dan penggunaan ruang.
Mulakan dari lapisan imej atas dan cari ke bawah selepas menemuinya, baca ke dalam ingatan dalam ingatan, , boleh digunakan terus. Dalam erti kata lain, bekas Docker yang berjalan pada mesin yang sama berkongsi fail yang sama semasa runtime.
Cari dari atas ke bawah dan salin ke lapisan bekas selepas menemuinya Untuk bekas, perkara yang anda boleh lihat ialah lapisan bekas Untuk fail ini, anda tidak boleh melihat fail dalam lapisan imej, dan kemudian mengubah suai terus fail dalam lapisan bekas.
Cari dari atas ke bawah, dan selepas menemuinya, rekodkan pemadaman dalam bekas itu , tetapi pemadaman lembut. Ini menyebabkan saiz imej hanya bertambah, bukan berkurangan.
Tambahkannya terus ke lapisan paling atas bekas boleh tulis tanpa menjejaskan lapisan imej.
Semua perubahan pada bekas, sama ada menambah, memadam atau mengubah suai fail, hanya akan berlaku dalam lapisan bekas. Hanya lapisan bekas boleh ditulis dan semua lapisan imej di bawah lapisan bekas adalah baca sahaja, jadi imej boleh dikongsi oleh berbilang bekas.
Buat bekas melalui imej, kemudian kendalikan lapisan bekas, pastikan lapisan imej tidak berubah, dan kemudian bungkus lapisan bekas dan lapisan imej selepas operasi Hantar sebagai imej baharu.
komit buruh pelabuhan: Buat imej baharu menggunakan bekas.
Sintaks:
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
PILIHAN keterangan:
1 Muat turun imej tomcat
2. Buat dan jalankan bekas tomcat melalui imej tomcat:
3 bekas:docker run -d --name="tomcat01" tomcat4. Salin fail dalam direktori webapps.dist bekas tomcat ke direktori webapps:
docker exec -it tomcat01 /bin/bash5 >Tukar bekas dc904437d987 Simpan sebagai imej baharu dan tambah maklumat pengirim dan maklumat perihalan Imej yang diserahkan dinamakan tomcatplus dan versinya ialah 1.0:
cp -r webapps.dist/* webappsAnda boleh melihat penyerahan komit Saiz imej tomcat baharu adalah lebih besar sedikit daripada imej tomcat asal kerana kami menyalin fail dalam lapisan bekas.
docker commit -a="wanli" -m="add webapps files" dc904437d987 tomcatplus:1.0
Pembelajaran yang disyorkan: "
tutorial video docker"
Atas ialah kandungan terperinci Prinsip imej Docker: sistem fail bersama dan pemahaman berlapis (contoh terperinci). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!