Docker konteynerinin çalışma dizinini verimli bir şekilde yönetmek, hataları önlemek ve tahmin edilebilir davranışı sağlamak için çok önemlidir. Çalışma dizini, konteyner içinde yürütülen komutlar için varsayılan konumu belirler. Bu makale, Docker konteynerlerinizin bu önemli yönünü ayarlamak ve değiştirmek için çeşitli yöntemleri ele almaktadır.
İçindekiler
- Docker Çalışma Dizininin Anlaşılması
- Dockerfile’ınızda Çalışma Dizinini Tanımlama
docker run
Komutu ile Çalışma Dizinini Ayarlama- Çalışan Bir Konteynerde Çalışma Dizinini Değiştirme
- En İyi Uygulamalar ve Hususlar
- Sıkça Sorulan Sorular
Docker Çalışma Dizininin Anlaşılması
Bir Docker konteyneri içindeki çalışma dizini, ana işletim sisteminizdeki geçerli dizin kavramını yansıtır. Konteyner içinde yürütülen komutlar bu konumdan çalışır. Açıkça belirtilmediği takdirde, varsayılan olarak çalışma dizini kök dizindir (/
). Bu varsayılan değer, organizasyonel sorunlara ve potansiyel güvenlik risklerine yol açabilir. Çalışma dizinini açıkça tanımlamak, komutlarınızın beklendiği gibi çalışmasını sağlar ve kritik sistem dosyalarında istenmeyen değişiklikleri önler.
Dockerfile’ınızda Çalışma Dizinini Tanımlama
En güvenilir yaklaşım, WORKDIR
komutunu kullanarak çalışma dizinini Dockerfile
‘ınızda ayarlamak. Bu, bu imajdan oluşturulan tüm konteynerlerde tutarlı davranışı sağlar.
# Resmi bir temel imaj kullanın
FROM ubuntu:latest
# Çalışma dizinini ayarlayın
WORKDIR /app
# Uygulama dosyalarını kopyalayın
COPY . /app
# Bağımlılıkları yükleyin
RUN apt-get update && apt-get install -y python3 python3-pip
# Uygulama bağımlılıklarını yükleyin
RUN pip3 install -r requirements.txt
# Konteyner başlatıldığında çalıştırılacak komut
CMD ["python3", "your_app.py"]
Bu örnekte, WORKDIR /app
, /app
‘i çalışma dizini olarak ayarlar. Tüm sonraki komutlar bu dizinin içinden çalışır.
docker run
Komutu ile Çalışma Dizinini Ayarlama
Hızlı test etme veya geçici bir çalışma diziniyle bir konteyner çalıştırmak için, docker run
komutu ile -w
veya --workdir
bayrağını kullanın. Bu değişiklik yalnızca geçerli konteyner örneğini etkiler.
docker run -it -w /opt/my-app my-image bash
Bu, my-image
‘ı etkileşimli olarak (-it
) çalışma dizini /opt/my-app
olarak ayarlanmış bir şekilde çalıştırır.
Çalışan Bir Konteynerde Çalışma Dizinini Değiştirme
Zaten çalışan bir konteynerin çalışma dizinini değiştirmek için, konteynerin kabuğu içinde cd
komutunu kullanın.
docker exec -it <container_id> bash
cd /new/working/directory
<container_id>
‘yi konteynerinizin kimliğiyle değiştirin. Bu, geçici değişiklikler içindir ve yeniden başlatmalarda kalıcı değildir.
En İyi Uygulamalar ve Hususlar
- Dockerfile’a Öncelik Verin: Tutarsız davranışı sağlamanın en güvenilir yöntemi, çalışma dizinini
Dockerfile
‘ınızda (WORKDIR
kullanarak) tanımlamaktır. - Mutlak Yollar Kullanın: Belirsizliği önlemek için
WORKDIR
ile mutlak yollar kullanın. - Birden Fazla
WORKDIR
Komutu: BirDockerfile
içinde birden fazlaWORKDIR
komutu kullanabilirsiniz. Her sonraki komut, önceki çalışma dizinine veya ilk komut ise kök dizine görelidir. - Dizin Oluşturma: Docker,
WORKDIR
‘de belirtilen dizini var olmadığı takdirde otomatik olarak oluşturur. - Güvenlik: Güvenlik sorunları nedeniyle kesinlikle gerekli olmadığı sürece çalışma dizinini kök dizine (
/
) ayarlamayın.
Sıkça Sorulan Sorular
- S: Çalışma dizini belirtmezsem ne olur? C: Çalışma dizini varsayılan olarak
/
(kök) olur. - S:
WORKDIR
ile göreli yollar kullanabilir miyim? C: Evet, ancak öncekiWORKDIR
komutuna görelidirler. - S:
WORKDIR
‘de belirtilen dizin yoksa ne olur? C: Docker onu oluşturur.
Bu kılavuz, Docker konteynerlerinde çalışma dizinlerini yönetme konusunda kapsamlı bir anlayış sağlar. Her zaman güvenlik en iyi uygulamalarına öncelik verirken, ihtiyaçlarınıza en uygun yöntemi seçmeyi unutmayın.