Peta dunia

 

EN: Read in English

Dunia D6: Di Sebalik Tabir

Sistem fail overlay

Anda akan belajar: cara banyak container kongsi satu image, dan setiap satu tulis pada lapisan atas sendiri yang nipis.

Teks BM belum disemak oleh penutur asli.

Disemak dengan Docker Engine 29 pada 31 Okt 2026

Masalahnya

Sepuluh bekas bermula dari satu pek makanan alpine. Berapa banyak ruang cakera yang diperlukan?

Pilih satu jawapan.

Tengok

Dua bekas berjalan, box1 dan box2, dari satu image alpine. docker system df tunjuk satu image 12.9MB dan dua container yang guna 8.192kB sahaja. Transkrip Docker: $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e7661ead3721 alpine:3.22 "sleep 1000" 3 seconds ago Up 3 seconds box2 61dfee819878 alpine:3.22 "sleep 1000" 6 seconds ago Up 6 seconds box1 $ docker system df TYPE TOTAL ACTIVE SIZE RECLAIMABLE Images 1 1 12.9MB 0B (0%) Containers 2 2 8.192kB 0B (0%) Local Volumes 0 0 0B 0B Build Cache 0 0 0B 0B

Laptop anda~

  • Tiada tingkap terbuka

Bekas (container)

  • box1berjalan
    dari alpine:3.22
  • box2berjalan
    dari alpine:3.22

Pek beku (image)

  • alpine:3.221 layer · 12.9MB · sedang diguna

2 container (2 berjalan), 1 image, 0 loker.

Satu image, dua bekas, ruang tambahan yang kecil. Lapisan image ialah kek lapis baca sahaja. Setiap bekas dapat plastik lutsinar di atas. Susunan itu ialah overlay filesystem: Lapisan image baca sahaja, dengan satu plastik nipis boleh tulis di atas untuk setiap container. (sistem fail overlay).

Cuba

box1 tulis nota pada plastiknya. Boleh box2 baca? Taip docker exec box2 cat /root/note.txt.

Laptop anda~

  • Tiada tingkap terbuka

Bekas (container)

  • box1berjalan
    dari alpine:3.22
  • box2berjalan
    dari alpine:3.22

Pek beku (image)

  • alpine:3.221 layer · 12.9MB · sedang diguna

2 container (2 berjalan), 1 image, 0 loker.

Teka

box1 ubah /etc/profile, satu fail dari image. Ke mana perubahan itu pergi?

Pilih satu jawapan.

Semak

bash
docker run --name box alpine:3.22 sh -c 'echo hi > /root/note.txt; rm /etc/motd; echo hi >> /etc/profile'
docker diff box
C /etc
C /etc/profile
D /etc/motd
C /root
A /root/note.txt
Output sebenar pada Docker 29: satu bekas tambah nota, padam /etc/motd dan ubah /etc/profile. docker diff senaraikan baris C, A dan D.

docker diff baca plastik atas. A = ditambah, C = diubah, D = dipadam. Padam tinggalkan pelekat penyorok, dipanggil whiteout. Image masih ada fail itu.

Semak

Tabiat baik, atau perlu diperbaiki?

Leret ke kanan untuk bagus, ke kiri untuk perlu baiki. Atau guna butang.

1 / 4

Simpan fail pangkalan data dalam volume, bukan pada plastik atas.

Simpan fail pangkalan data dalam volume, bukan pada plastik atas.

Anda berjaya!

Kini anda boleh terangkan cara container kongsi satu image.

Nak tahu lebih (pilihan)

Dalam istilah OverlayFS: lapisan image ialah lowerdir, plastik ialah upperdir, dan bekas nampak merged. Pemasangan baharu Docker Engine 29 guna stor image containerd dengan snapshotter overlayfs. Pemasangan lama yang dinaik taraf mungkin tunjuk overlay2. Semak dengan docker info.

Misi sebenar

  1. docker run -d --name box alpine:3.22 sleep 300
  2. docker exec box sh -c "echo hi > /root/note.txt"
  3. docker diff box
  4. docker rm -f box

0 daripada 4 langkah siap · Tanda anda disimpan.