Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 9379|Yanıt: 0

Docker hacmi monte edildiğinde dosya veya klasör mevcut değildir

[Bağlantıyı kopyala]
Yayınlandı 8.11.2021 09:20:35 | | |
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ırVar 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ırBoş 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 ABoş 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 ABoş olmayan klasör B mevcutturHost ü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örleriBoş olmayan klasör B mevcutturHostta 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ğildirKonteyner Çin parçası kaplı (boşalmış)
Klasör var ve boş değildirKlasör yok/var ama boş/var ve boş değildirkonteyner Ç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.jsZaten var olan belgeler congfigB.jsHata, 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.jsMevcut dosya congfigB.jskonteyner Ç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.jsVar olmayan dosyalar congfigB.jsKonteynere 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 dosyalarZaten var olan belgelerYasaklar
Mevcut BelgelerVar olmayan dosyalar / zaten var olan dosyalarEkle/ü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)




Önceki:Elasticsearch, verileri yedeklemek ve taşımak için elasticdump kullanır
Önümüzdeki:Docker POI hata istisnası çözümü
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com