Pengantar caching Docker

Pengantar Docker

Tim Sangster

Software Engineer @ DataCamp

Docker build

Mengunduh dan mengekstrak file dengan instruksi Docker.

RUN curl http://example.com/example_folder.zip
RUN unzip example_folder.zip

Akan mengubah sistem file dan menambahkan:

/example_folder.zip
/example_folder/
    example_file1
    example_file2

Perubahan inilah yang disimpan di image.

Pengantar Docker

Instruksi Docker terkait dengan perubahan sistem file

Setiap instruksi di Dockerfile ditautkan ke perubahan yang dibuatnya pada sistem file image.

FROM docker.io/library/ubuntu
 => Memberi sistem file awal dengan semua berkas untuk menjalankan Ubuntu
COPY /pipeline/ /pipeline/
 => Membuat folder /pipeline/
 => Menyalin banyak berkas ke folder /pipeline/
RUN apt-get install -y python3
 => Menambahkan python3 ke /var/lib/
Pengantar Docker

Layer Docker

  • Layer Docker: Semua perubahan akibat satu instruksi Dockerfile.
  • Image Docker: Semua layer yang dibuat selama build

--> Image Docker: Semua perubahan pada sistem file oleh semua instruksi Dockerfile.

Saat membangun Dockerfile, Docker memberi tahu layer yang sedang dikerjakan:

 => [1/3] FROM docker.io/library/ubuntu 
 => [2/3] RUN apt-get update
 => [3/3] RUN apt-get install -y python3
Pengantar Docker

Caching Docker

Build berurutan jauh lebih cepat karena Docker memakai ulang layer yang tidak berubah.

Menjalankan ulang build:

 => [1/3] FROM docker.io/library/ubuntu
 => CACHED [2/3] RUN apt-get update
 => CACHED [3/3] RUN apt-get install -y python3

Menjalankan ulang build dengan perubahan:

 => [1/3] FROM docker.io/library/ubuntu
 => CACHED [2/3] RUN apt-get update
 => [3/3] RUN apt-get install -y R
Pengantar Docker

Memahami caching Docker

Mengetahui kapan layer di-cache membantu memahami mengapa kadang image tidak berubah setelah rebuild.

  • Docker tidak bisa tahu kapan rilis baru python3 tersedia.
  • Docker akan menggunakan layer cache karena instruksinya identik dengan build sebelumnya.
 => [1/3] FROM docker.io/library/ubuntu
 => CACHED [2/3] RUN apt-get update
 => CACHED [3/3] RUN apt-get install -y python3
Pengantar Docker

Memahami caching Docker

Membantu kita menulis Dockerfile yang membangun lebih cepat karena tidak semua layer perlu dibangun ulang.

Pada Dockerfile berikut, semua instruksi harus dibangun ulang jika file pipeline.py berubah:

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
Pengantar Docker

Memahami caching Docker

Membantu kita menulis Dockerfile yang membangun lebih cepat karena tidak semua layer perlu dibangun ulang.

Pada Dockerfile berikut, hanya instruksi COPY yang perlu dijalankan ulang.

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
Pengantar Docker

Ayo berlatih!

Pengantar Docker

Preparing Video For Download...