Analisis mendalam lapisan fail docker (contoh terperinci)

WBOY
Lepaskan: 2022-01-28 17:09:33
ke hadapan
3735 orang telah melayarinya

Artikel ini membawakan anda pengetahuan yang berkaitan tentang pelapisan fail docker Artikel ini menggunakan contoh bekas docker untuk menerangkan beberapa prinsip lapisan fail docker.

Analisis mendalam lapisan fail docker (contoh terperinci)

Penyediaan Pengetahuan

  • Docker sebenarnya menggunakan beberapa ciri Kernel Linux untuk mencapai pengasingan sumber, dan sistem fail adalah salah satu daripadanya , untuk membolehkan sumber digunakan dengan lebih cekap, docker menggunakan struktur sistem fail hierarki untuk melaksanakan sistem fail kontena.
  • Secara peribadi, saya rasa prinsipnya sedikit seperti konsep alam semesta selari Sesetengah orang percaya bahawa terdapat alam semesta selari di alam semesta kita, iaitu pilihan berbeza yang kita buat akan mengedarkan alam semesta yang berbeza dan terus berjalan. . Bermimpi adalah dapat mengembara di antara alam semesta yang selari ini. Ia agak serupa di sini Selepas kita membungkus imej dan menjalankannya melalui docker run, alam semesta yang berbeza sebenarnya dicipta atas dasar ini Apabila kontena terus berjalan, kandungan kontena adalah sama dengan imej asal. Perkara akan mempunyai banyak penyelewengan dan perbezaan, dan secara beransur-ansur membentuk alam semesta mereka sendiri.

Sistem Fail Docker

Status lapisan sistem fail setiap bekas boleh diperolehi daripada pemeriksaan docker [id-kontainer] --format={{.GraphDriver}}

{map[LowerDir:/var/lib/docker/overlay2/52f456f455215e56b77087495a5d35323fbf1c0e0391f45349f386006c75865b-init/diff:/var/lib/docker/overlay2/e4b90240aa77212dde6499a49c421d26977ed9fe8a1f6fcbaaaf77d85c67654e/diff MergedDir:/var/lib/docker/overlay2/52f456f455215e56b77087495a5d35323fbf1c0e0391f45349f386006c75865b/merged UpperDir:/var/lib/docker/overlay2/52f456f455215e56b77087495a5d35323fbf1c0e0391f45349f386006c75865b/diff WorkDir:/var/lib/docker/overlay2/52f456f455215e56b77087495a5d35323fbf1c0e0391f45349f386006c75865b/work] overlay2}
Salin selepas log masuk

Terdapat empat jenis terutamanya:

LowerDir

Ini ialah semua bekas berdasarkan imej ini akan menghala ke sistem fail yang sama, iaitu lapisan imej . Semua bekas Lapisan ini akan digunakan.

Jadi dari manakah lapisan ini berasal? untuk menyediakan sistem fail akhir dalam bekas

UpperDir

Ini adalah untuk merekodkan operasi bekas yang berbeza, dan kemudian melalui perbandingan lapisan Bawah, lapisan Gabung boleh dihasilkan

WorkDir

Belum difahami secara mendalam

Contoh

Lihat maklumat sistem fail lapisan cermin

docker run -d alpine:latest
Salin selepas log masuk

Perhatikan UpperDir , ini adalah lapisan atas imej, iaitu, kita boleh membuat pengubahsuaian pada tahap ini, yang akan menjejaskan bekas yang dibuat kemudian

docker inspect alpine --format={{.GraphDriver}}
Salin selepas log masuk
Lihat maklumat sistem fail bekas
{map[MergedDir:/var/lib/docker/overlay2/e4b90240aa77212dde6499a49c421d26977ed9fe8a1f6fcbaaaf77d85c67654e/merged UpperDir:/var/lib/docker/overlay2/e4b90240aa77212dde6499a49c421d26977ed9fe8a1f6fcbaaaf77d85c67654e/diff WorkDir:/var/lib/docker/overlay2/e4b90240aa77212dde6499a49c421d26977ed9fe8a1f6fcbaaaf77d85c67654e/work] overlay2}
Salin selepas log masuk

Anda boleh melihat bahawa lapisan bawah bekas adalah lapisan atas imej Pengubahsuaian yang kami buat pada bekas akan ditunjukkan di lapisan atas, dan lapisan yang digabungkan akan disusun dan. dipaparkan pada bekas.

docker inspect 9a118484ba --format={{.GraphDriver}}
Salin selepas log masuk
Kami boleh menggunakan baris arahan untuk menyemak perubahan dalam sistem fail kontena
{map[LowerDir:/var/lib/docker/overlay2/3d3f32727c4f7867d43c1e61d635ac0ed22e95ff39c66240166dd6614b81fe14-init/diff:/var/lib/docker/overlay2/e4b90240aa77212dde6499a49c421d26977ed9fe8a1f6fcbaaaf77d85c67654e/diff MergedDir:/var/lib/docker/overlay2/3d3f32727c4f7867d43c1e61d635ac0ed22e95ff39c66240166dd6614b81fe14/merged UpperDir:/var/lib/docker/overlay2/3d3f32727c4f7867d43c1e61d635ac0ed22e95ff39c66240166dd6614b81fe14/diff WorkDir:/var/lib/docker/overlay2/3d3f32727c4f7867d43c1e61d635ac0ed22e95ff39c66240166dd6614b81fe14/work] overlay2}
Salin selepas log masuk

Memandangkan kami belum mengendalikan bekas, tiada perbezaan antara bekas dan imej sekarang

Kami memulakan bekas lain dan biarkan ia tidur selama 300 saat, kemudian masuk ke dalam bekas untuk mengubah suai beberapa maklumat fail
docker diff 9a118484ba
Salin selepas log masuk

Semak perubahan dalam sistem fail kontena

# docker exec -it ca91bb /bin/sh

/ # echo "helloWorld" > /tmp/hello.txt
Salin selepas log masuk
Anda boleh lihat, Kami membuat perubahan ini pada sistem fail dan semuanya telah direkodkan

Kandungan ini sebenarnya dalam direktori UpperDir
docker diff ca91bbffb801

C /root
C /root/.ash_history
C /tmp
A /tmp/hello.txt
Salin selepas log masuk

Ubah suai kandungan kontena daripada mesin hos

tree -L 1 diff/

diff/
├── root
└── tmp2 directories, 0 files
Salin selepas log masuk

Daripada eksperimen di atas, kita boleh tahu bahawa lapisan atas ialah kandungan tambahan, yang dicerminkan dalam perubahan bekas dengan bergabung dengan lapisan bawah. Jadi bolehkah kita mengubah suai lapisan atas secara langsung untuk mengendalikan bekas?

    Kami menambah demo direktori dalam direktori di mana bahagian atas terletak dan menyentuh fail di dalamnya
  • Mari kita lihat sama ada kita dapat melihat fail yang kami cipta daripada bekas

    # tree -L 2 ./
    
    ./
    ├── demo
    │   └── mytest.log
    ├── root
    └── tmp
        └── hello.txt
    Salin selepas log masuk
    Anda dapat melihat bahawa ia telah berkuat kuasa, jadi jika kami ingin memulakan bekas ini, kami boleh memadamkan terus semua kandungan lapisan atas.

    /demo # pwd
    /demo
    /demo # ls
    mytest.log
    Salin selepas log masuk

    Aplikasi

Cari jejak pemasangan perisian

    Dalam proses projek terdahulu, pelanggan sentiasa memerlukan kami untuk menyediakan, Kami tidak pernah menemui cara yang lebih baik untuk memberikan pelanggan kandungan yang akan diubah suai oleh perisian ejen kami Berdasarkan aplikasi fail berlapis docker ini, kami boleh menggunakan ejen pada bekas, dan kemudian ia boleh dilihat dengan sepintas lalu Temui direktori dan direktori mana. fail yang akan diubah suai oleh perisian.
  • Cepat pulihkan bekas

  • Cepat berinteraksi dengan sistem fail kontena

  • Lindungi yang mendasari sistem fail Tidak dimusnahkan

  • Jimat ruang hos

  • Pembelajaran yang disyorkan: "

    tutorial video docker
  • "

Atas ialah kandungan terperinci Analisis mendalam lapisan fail docker (contoh terperinci). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:csdn.net
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan