Pengantar Docker
Tim Sangster
Software Engineer @ DataCamp
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.
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/
--> 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
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
Mengetahui kapan layer di-cache membantu memahami mengapa kadang image tidak berubah setelah rebuild.
=> [1/3] FROM docker.io/library/ubuntu
=> CACHED [2/3] RUN apt-get update
=> CACHED [3/3] RUN apt-get install -y python3
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
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