Docker'a Giriş
Tim Sangster
Software Engineer @ DataCamp
Docker talimatlarını kullanarak bir dosya indirme ve zip’ten çıkarma.
RUN curl http://example.com/example_folder.zip
RUN unzip example_folder.zip
Dosya sistemini değiştirir ve şunları ekler:
/example_folder.zip
/example_folder/
example_file1
example_file2
Görüntüde saklanan değişiklikler bunlardır.
Dockerfile’daki her talimat, imaj dosya sisteminde yaptığı değişikliklere bağlıdır.
FROM docker.io/library/ubuntu
=> Ubuntu’yu çalıştırmak için gereken tüm dosyalarla başlamak üzere bir dosya sistemi sağlar
COPY /pipeline/ /pipeline/
=> /pipeline/ klasörünü oluşturur
=> Birden çok dosyayı /pipeline/ klasörüne kopyalar
RUN apt-get install -y python3
=> /var/lib/ içine python3 ekler
--> Docker imajı: Tüm Dockerfile talimatlarının dosya sisteminde yaptığı tüm değişiklikler.
Bir Dockerfile derlenirken, Docker hangi katmanda çalıştığını gösterir:
=> [1/3] FROM docker.io/library/ubuntu
=> [2/3] RUN apt-get update
=> [3/3] RUN apt-get install -y python3
Ardışık derlemeler çok daha hızlıdır çünkü değişmeyen katmanlar yeniden kullanılır.
Bir derlemeyi yeniden çalıştırma:
=> [1/3] FROM docker.io/library/ubuntu
=> CACHED [2/3] RUN apt-get update
=> CACHED [3/3] RUN apt-get install -y python3
Değişiklikle yeniden derleme:
=> [1/3] FROM docker.io/library/ubuntu
=> CACHED [2/3] RUN apt-get update
=> [3/3] RUN apt-get install -y R
Katmanların ne zaman önbellekten geldiğini bilmek, bazen yeniden derlemeden sonra imajların neden değişmediğini anlamaya yardımcı olur.
=> [1/3] FROM docker.io/library/ubuntu
=> CACHED [2/3] RUN apt-get update
=> CACHED [3/3] RUN apt-get install -y python3
Tüm katmanların yeniden derlenmesi gerekmediği için daha hızlı Dockerfile yazmamıza yardımcı olur.
Aşağıdaki Dockerfile’da, pipeline.py dosyası değişirse tüm talimatlar yeniden çalışır:
FROM ubuntu
COPY /app/pipeline.py /app/pipeline.py
RUN apt-get update
RUN apt-get install -y python3
=> [1/4] FROM docker.io/library/ubuntu
=> [2/4] COPY /app/pipeline.py /app/pipeline.py
=> [3/4] RUN apt-get update
=> [4/4] RUN apt-get install -y python3
Tüm katmanların yeniden derlenmesi gerekmediği için daha hızlı Dockerfile yazmamıza yardımcı olur.
Aşağıdaki Dockerfile’da yalnızca COPY talimatı yeniden çalışır.
FROM ubuntu
RUN apt-get update
RUN apt-get install -y python3
COPY /app/pipeline.py /app/pipeline.py
=> [1/4] FROM docker.io/library/ubuntu
=> CACHED [2/4] RUN apt-get update
=> CACHED [3/4] RUN apt-get install -y python3
=> [4/4] COPY /app/pipeline.py /app/pipeline.py
Docker'a Giriş