Bind mount
- Docker & Kubernetes kursu
- Başlangıç
- Ders 52/82
- 4 dk
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ı yenileDosya 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
# buraya yazBeklenen çı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.
docker run --rm -v ____:/app -w /app node:20 npm test
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ü |