CodeBlanks Logo Icon CodeBlanks

Bind mount

Bind mount ile host dizinini bağlamayı öğrenirsin.

Bind mount

Bind mount, ana makinedeki bir klasörü ya da dosyayı doğrudan container'a bağlar. Kaynak bir yol olmalıdır (/, ./ ya da $PWD ile başlar). Geliştirmede kodu container'a bağlamak için kullanılır; dosyayı kaydettiğin anda container değişikliği görür:

docker run -d --name web -p 8080:80 -v "$PWD/site":/usr/share/nginx/html:ro nginx
# site/index.html'i düzenle, tarayıcıyı yenile

Dosya bağlama ve izinler

Tek bir ayar dosyası da bağlanabilir. Bind mount'ta dosyalar ana makinedeki sahiplik ve izinleri taşır; container root olmayan bir kullanıcıyla çalışıyorsa yazma izni sorunları çıkabilir:

docker run -d -v "$PWD/nginx.conf":/etc/nginx/nginx.conf:ro nginx
docker run --rm -u "$(id -u):$(id -g)" -v "$PWD":/app -w /app node:20 npm run build

İkinci komut, oluşan dosyaların root yerine senin kullanıcına ait olmasını sağlar.

Uygulama Canlı geliştirilen site

nginx'ten web adlı container'ı arka planda başlat: ana makinenin 8080'ini container'ın 80'ine eşle; mevcut klasördeki site klasörünü ("$PWD/site") /usr/share/nginx/html'e salt okunur bağla.

Başlangıç kodu

terminal
# buraya yaz

Beklenen çıktı

6f708192a3b4

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Bind mount ile named volume arasındaki temel fark nedir?

  • Bind mount daha kalıcıdır
  • Volume yalnızca okunur
  • Fark yoktur
  • Bind mount ana makinedeki belirli bir yolu kullanır; volume'ü Docker yönetir Doğru cevap

Açıklama: Üretim verisi için volume, geliştirmede kod için bind mount tipiktir.

2 Mevcut klasörü /app'e bağla.

Soru
docker run --rm -v ____:/app -w /app node:20 npm test
Cevap
docker run --rm -v "$PWD":/app -w /app node:20 npm test

Açıklama: $PWD mevcut klasörün tam yoludur.

3 Eşleştir.

Kavram Anlamı
-v "$PWD":/app Bind mount
-v data:/app Named volume
:ro Salt okunur
-u "$(id -u)" Dosya sahipliği sorunu çözümü

Başlangıç bölümündeki tüm dersler