Arka plan
Docker hacmi, docker konteyneri başlatırken bazı dosyaları (örneğin yapılandırma dosyaları) dinamik olarak birleştirip imajdaki orijinal dosyaların üzerine yazmamıza olanak tanır, ancak konteynerin ana bilgisayarında henüz var olmayan bir klasör veya dosyayı monte edersek ne olur? LZ çalışmalarında böyle bir sorunla karşılaştı, bu yüzden kendisi pratik yaptı ve deneysel sonuçları şu şekilde kaydetti:
klasör montajı
Docker'ın klasör montajı davranışı aşağıdaki gibi tekdirdir:
- Eğer klasör yoksa, önce klasör oluşturulur (veya çok katmanlı klasörse, özyinelemeli olarak)
- Klasör içeriğini konteynerdeki klasör içeriğiyle birlikte ana bilgisayardaki klasör içeriğiyle üzerine yaz
Detaylar şunlardır:
Hosttaki klasör var ve boş değildir
ev sahibi | konteyner | Montaj Sonucu | | Boş olmayan klasör A vardır | Var olmayan Klasör B | Önce Contanier'de klasör B oluşturun, ardından klasör A'daki tüm dosyaları B'ye kopyalayın | | Boş olmayan klasör A vardır | Boş olmayan klasör B mevcuttur | Önce, konteyner Çin klasörü B'nin orijinal içeriğini boşaltın, ardından A'nın Çince kopyasını B'ye kopyalayın |
Konteynerde B klasörü var olup olmamasına bakılmaksızın, A B'nin içeriğini tamamen üzerine yazar
Hosttaki klasör var, ancak boş
ev sahibi | konteyner | Montaj Sonucu | | Var olan boş klasör A | Boş olmayan klasör B mevcuttur | Çin klasörü B konteynerinin içeriği boşalmıştır |
Konteynerdeki ilgili klasörün içeriği boşaldılır
Ana klasör mevcut değildir
ev sahibi | konteyner | Montaj Sonucu | | Var olmayan Klasör A | Boş olmayan klasör B mevcuttur | Host üzerinde klasör A oluşturun ve konteyner Çince klasörü B'nin içeriği boşalır | | Var olmayan A/B/C klasörleri | Boş olmayan klasör B mevcuttur | Hostta A/B/C klasörleri oluşturun ve konteyner Çin klasörü B'nin içeriği boşaldılır |
Konteynerdeki ilgili klasörün içeriği boşaldılır
özet
Ana klasör kesinlikle konteyner Çin klasörünün üzerine yazacaktır:
ev sahibi | konteyner | Montaj Sonucu | | Klasör yok/klasör var ama boş | Klasör yok/var ama boş/var ve boş değildir | Konteyner Çin parçası kaplı (boşalmış) | | Klasör var ve boş değildir | Klasör yok/var ama boş/var ve boş değildir | konteyner Çin klasör içeriği üzerine yazılır (orijinal içerik boşaltır ve ana bilgisayardaki klasörün içeriği üzerine yazılır) |
File mount
Dosya montajı ile klasör montajı arasındaki en büyük fark şudur:
- docker, hostta olmayan dosyaları, konteynerde zaten var olan dosyalara monte etmeyi yasaklar
- Dosya montajı, aynı klasör altındaki diğer dosyalarda hiçbir etkisi yoktur
Ayrıca, üzerine yazma davranışı klasör montajıyla tutarlıdır, yani:
- Dosyanın içeriğini konteynerdeki dosyanın içeriğiyle üzerine yaz
Detaylar şunlardır:
ev sahibi
ev sahibi | konteyner | Montaj Sonucu | | Var olmayan dosyalar configA.js | Zaten var olan belgeler congfigB.js | Hata, bir dosyaya dizin mi bağlamaya çalışıyorsunuz (ya da tam tersi)? Belirtilen ana konak yolunun var olup olmadığını ve beklenen tip olup olmadığını kontrol edin. Aynı anda ana bilgisayarda configA.js ve configB.js iki boş dizin oluşturur, ancak konteyner başlanamaz |
ev sahibi
ev sahibi | konteyner | Montaj Sonucu | | Mevcut dosya configA.js | Mevcut dosya congfigB.js | konteyner Çin öğesi configB.js aynı kalabilir, ancak dosya içeriği congfigA.js içeriği tarafından üzerine yazılır | | Mevcut dosya configA.js | Var olmayan dosyalar congfigB.js | Konteynere configB.js yeni bir dosya, dosyanın içeriğiyle birlikte configA.js dosyanın içeriği değişmeden kalır, dosyanın altındaki diğer tüm dosyalar configB.js |
özet
Ana bilgisayardaki dosya her zaman konteyner Çince klasörünün üzerine yazar
ev sahibi | konteyner | Montaj Sonucu | | Var olmayan dosyalar | Zaten var olan belgeler | Yasaklar | | Mevcut Belgeler | Var olmayan dosyalar / zaten var olan dosyalar | Ekle/üzerine yaz (eğer dizin yoksa bir dizin oluşturur) |
son
klasör montajı
- Var olmayan klasörlerin veya boş klasörlerin konteynere monte edilmesine izin verirseniz, konteynerdeki ilgili klasörler boşalmıştır
- Boş olmayan bir klasörü konteynere eklemek, konteynerdeki orijinal klasörün üzerine yazılır
File mount
- Var olmayan dosyaların, konteynerde zaten var olan dosyalara monte edilmesi yasaktır
- Mevcut dosyalar konteynere bağlandığında üzerine yazılır ve dosyalar mevcut değilse oluşturulur
Uygulama senaryoları
- Yukarıdaki analizden, klasör montajının tüm klasördeki dosyaların üzerine yazılması için kullanıldığı görülebilir; bu nedenle konteynere çok sayıda dosya monte edilmesi gerektiğinde kullanılabilir; ayrıca boş bir klasör veya var olmayan bir klasör monte edildiğinde genellikle tersine kullanılır: yani, konteyner başlatıldıktan sonra, bazı dosyalar (örneğin loglar) konteynerdeki montaj noktasının klasörü altında oluşturulabilir ve bu sırada doğrudan ilgili ana bilgisayardaki klasörde görülebilir.
- Dosya montajı, genellikle yapılandırma dosyalarını çalıştırma zamanında varsayılan yapılandırmayı dinamik olarak değiştirmek için kullanılır; çünkü yalnızca tek bir dosyanın üzerine yazar ve konteynerteki aynı klasördeki diğer dosyaları etkiler.
Transfer edilenler:Bağlantı girişi görünür.
(Son) |