Latar
Docker Volume memungkinkan kita untuk secara dinamis memasang beberapa file (seperti file konfigurasi) untuk menimpa file asli dalam gambar saat memulai kontainer Docker, tetapi apa yang terjadi jika kita memasang folder atau file yang belum ada di host ke kontainer? LZ mengalami masalah seperti itu dalam pekerjaannya, jadi dia mempraktikkannya sendiri dan mencatat hasil eksperimen sebagai berikut:
Pemasangan folder
Perilaku Docker pada pemasangan folder seragam, sebagai berikut:
- Jika folder tidak ada, folder dibuat terlebih dahulu (atau secara rekursif jika folder multi-level)
- Menimpa konten folder dalam wadah dengan konten folder di host
Rinciannya adalah sebagai berikut:
Folder di host ada dan tidak kosong
tuan rumah | wadah | Hasil pemasangan | | Folder A yang tidak kosong ada | Folder B yang tidak ada | Buat folder B di contanier terlebih dahulu, lalu salin semua file di folder A ke B | | Folder A yang tidak kosong ada | Folder B yang tidak kosong ada | Pertama, kosongkan isi asli folder Cina wadah B, lalu salin salinan Cina A ke B |
Terlepas dari apakah folder B dalam kontainer ada, A akan sepenuhnya menimpa konten B
Folder di host ada, tetapi kosong
tuan rumah | wadah | Hasil pemasangan | | Kosongkan folder A yang ada | Folder B yang tidak kosong ada | Isi folder Cina wadah B dikosongkan |
Konten folder yang sesuai dalam wadah dikosongkan
Folder host tidak ada
tuan rumah | wadah | Hasil pemasangan | | Folder A yang tidak ada | Folder B yang tidak kosong ada | Buat folder A di host, dan isi folder Cina kontainer B dikosongkan | | Folder A/B/C yang tidak ada | Folder B yang tidak kosong ada | Buat folder A/B/C pada host, dan isi folder Cina kontainer B dikosongkan |
Konten folder yang sesuai dalam wadah dikosongkan
ringkasan
Folder host pasti akan menimpa folder Cina kontainer:
tuan rumah | wadah | Hasil pemasangan | | Folder tidak ada/folder ada tetapi kosong | Folder tidak ada/ada tetapi kosong/ada dan tidak kosong | kontainer potongan Cina ditutup (dikosongkan) | | Folder ada dan tidak kosong | Folder tidak ada/ada tetapi kosong/ada dan tidak kosong | konten folder Cina kontainer ditimpa (konten asli dikosongkan, dan konten folder di host ditimpa) |
Pemasangan file
Perbedaan terbesar antara pemasangan file dan pemasangan folder adalah:
- Docker melarang memasang file yang tidak ada di host ke file yang sudah ada di kontainer
- Pemasangan file tidak berpengaruh pada file lain di bawah folder yang sama
Selain itu, perilaku timpanya konsisten dengan pemasangan folder, yaitu:
- Menimpa isi file dalam wadah dengan konten file di host
Rinciannya adalah sebagai berikut:
tuan rumah
tuan rumah | wadah | Hasil pemasangan | | File yang tidak ada configA.js | Dokumen yang sudah ada congfigB.js | Kesalahan, Apakah Anda mencoba memasang direktori ke file (atau sebaliknya)? Periksa apakah jalur host yang ditentukan ada dan merupakan jenis yang diharapkan. Ini menghasilkan dua direktori kosong configA.js dan configB.js di host secara bersamaan, tetapi kontainer tidak dapat memulai |
tuan rumah
tuan rumah | wadah | Hasil pemasangan | | Menyajikan file configA.js | Menyajikan file congfigB.js | item Cina kontainer configB.js tetap sama, tetapi isi file ditimpa oleh isi congfigA.js | | Menyajikan file configA.js | File yang tidak ada congfigB.js | File baru configB.js dalam wadah dengan isi file configA.js tetap tidak berubah configB.js semua file lain di bawah file |
ringkasan
File pada host akan selalu menimpa folder Cina kontainer
tuan rumah | wadah | Hasil pemasangan | | File yang tidak ada | Dokumen yang sudah ada | Tindakan yang dilarang | | Dokumen yang ada | File yang tidak ada / file yang sudah ada | Tambahkan/timpa (membuat direktori jika tidak ada) |
kesimpulan
Pemasangan folder
- Jika Anda mengizinkan folder yang tidak ada atau folder kosong dipasang di dalam kontainer, folder yang sesuai dalam kontainer akan dikosongkan
- Melampirkan folder yang tidak kosong ke kontainer akan menimpa folder asli dalam kontainer
Pemasangan file
- Dilarang memasang file yang tidak ada pada file yang sudah ada di wadah
- File yang ada akan ditimpa saat dilampirkan ke wadah, dan jika file tidak ada, file tersebut akan dibuat
Skenario aplikasi
- Dari analisis di atas, dapat dilihat bahwa pemasangan folder digunakan untuk menimpa file di seluruh folder, sehingga dapat digunakan ketika sejumlah besar file perlu dipasang ke dalam wadah, selain itu, jika folder kosong atau folder yang tidak ada dipasang, umumnya digunakan secara terbalik: yaitu, setelah kontainer dimulai, beberapa file (seperti log) dapat dihasilkan di bawah folder titik pemasangan di wadah, dan saat ini, dapat langsung dilihat di folder pada host yang sesuai.
- Pemasangan file sering digunakan untuk memasang file konfigurasi untuk memodifikasi konfigurasi default secara dinamis saat runtime karena hanya menimpa satu file tanpa memengaruhi file lain di folder yang sama dalam kontainer.
Ditransfer dari:Login hyperlink terlihat.
(Akhir) |