Pada pembahasan sebelumnya kita telah belajar pengertian serta dasar-dasar Docker dan bagaimana menginstal Docker di Sistem Operasi Linux dan windows.Pada kesempatan kali ini kita akan belajar meneruskan pembelajaran kita membangun Docker Image.
Docker image tuh kayak rencana kerja buat Docker container, yang isinya aplikasi sama segala yang perlu buat aplikasi itu jalan. Nah, container sendiri tuh kayak contoh realnya dari suatu image.
Oke, kita bakal bahas apa itu Dockerfile, cara bikinnya, dan gimana caranya bikin Docker image pakai Dockerfile.
Apa sih Dockerfile itu?
Jadi, Dockerfile itu kayak catatan tangan yang nyimpan semua perintah yang bisakamujalankan lewat command line buat bikin image. Di situkamubakal tulis semua instruksi yang dibutuhin Docker buat bikin image.
Docker image itu sebenernya kayak rangkaian filesystem yang ngikutin instruksi-instruksi dalam Dockerfile, yang akhirnya jadi aplikasi software yang bisakamujalankan.
File Docker itu biasanya punya bentuk kayak gini:
dockerfile
Walaupun instruksi-instruksi ini nggak sensitive sama huruf besar-kecilnya, tapi biasanya konvensinya kita tulis pake HURUF KAPITAL.
Berikut beberapa instruksi Dockerfile yang paling sering dipake, dengan penjelasan singkat:
- `ARG` – Buat ngasih tau variabel yang bisa di-pass waktu proses build.kamujuga bisa set nilai defaultnya.
- `FROM` – Ini nyatain image dasar buat bikin image baru. Instruksi ini harus jadi instruksi pertama yang bukan komentar di Dockerfile. Satu-satunya pengecualian kalokamumau pake variabel di FROM. Kalo gitu, FROM bisa didahului sama satu atau lebih instruksi ARG.
- `LABEL` – Buat nambahin metadata ke image, misalnya deskripsi, versi, penulis, dll.kamubisa nulis lebih dari satu LABEL, dan setiap instruksi LABEL itu kayak pasangan key-value.
- `RUN` – Ini perintah yang bakal dieksekusi waktu proses build. Setiap instruksi RUN bakal bikin layer baru di atas image yang lagi ada.
- `ADD` – Buat nyalin file dan folder dari sumber yang ditentuin ke tujuan di dalam image Docker. Sumbernya bisa berupa file atau folder lokal atau URL. Kalo sumbernya tar file lokal, otomatis bakal diekstrak ke dalam image Docker.
- `COPY` – Mirip kayak ADD tapi sumbernya cuma bisa file atau folder lokal.
- `ENV` – Instruksi ini buat nentuin environment variable.
- `CMD` – Buat tentuin perintah yang bakal dieksekusi paskamujalanin container.kamucuma bisa pake satu instruksi CMD di Dockerfile lo.
- `ENTRYPOINT` – Mirip kayak CMD, tapi ini tentuin perintah apa yang bakal dieksekusi waktukamujalanin container.
- `WORKDIR` – Directive ini nentuin direktori kerja saat ini buat instruksi RUN, CMD, ENTRYPOINT, COPY, dan ADD yang berikutnya.
- `USER` – Nentuin nama user atau UID buat dipake waktu jalanin instruksi RUN, CMD, ENTRYPOINT, COPY, dan ADD yang berikutnya.
- `VOLUME` – Buat ngijininkamunempelin direktori dari mesin host ke container.
- `EXPOSE` – Buat ngasih tau port yang bakal di-listen container waktu runtime.
Kalokamumau ngilangin file atau folder biar nggak masuk ke image, buat aja file .dockerignore di direktori lo. Sintaks .dockerignore mirip kayak salah satu sintaks di file .gitignore Git.
Untuk referensi lebih lanjut dan penjelasan detil tentang instruksi Dockerfile,kamubisa liat halaman resmi referensi Dockerfile.
Bikin Dockerfile
Nah, skenario yang paling sering kita temuin buat bikin Docker image itu tuh pull image yang udah ada dari registri kayak gini (biasanya dari Docker Hub), terus nentuin perubahan apa yangkamumau di images dasarnya.
Images dasar yang paling sering dipake waktu bikin Docker image itu Alpine, soalnya ukurannya kecil dan udah dioptimalkan buat jalan di RAM.
Docker Hub itu tuh layanan registri di cloud yang salah satu fungsinya itu buat simpen Docker image, baik di repositori publik atau privat.
Contohnya gini, kita mau bikin Docker image buat server Redis. Kita bakal pake ubuntu sebagai image dasarnya, meskipun sebelumnya kita telah berhasil menginstall diwindows tetapi dengan beberapa alasan saya mencontohkannya di Os Linux Ubuntu saya.
Setidaknya Ada beberapa alasan juga kenapa menjalankan Docker di Linux lebih baik daripada di Windows:
1. Performa Lebih Baik:
- Native Support: Linux kernel memiliki dukungan langsung untuk containerisasi, sehingga Docker berjalan lebih efisien dan optimal di Linux. Di Windows, Docker menggunakan virtualisasi parsial untuk menjalankan container Linux, yang menambah overhead resource.
2. Repositori Lebih Besar:
- Docker Hub: Sebagian besar image Docker tersedia di Docker Hub, yang lebih condong ke ranah Linux. Image ini merupakan template untuk membuat container dengan cepat. Banyak software dan tools dibangun dan berjalan di Linux, sehingga ketersediaan image Docker lebih banyak.
3. Kompatibilitas Lebih Luas:
- Portabilitas: Container Linux dirancang untuk bisa berjalan di berbagai distribusi Linux. Aplikasi yang Anda buat dan jalankan dalam container Linux lebih mudah dipindahkan ke server Linux lainnya dibandingkan dengan container Windows.
4. Keamanan:
- Isolasi Lebih Ketat: Beberapa argumen menyebutkan isolasi container di Linux lebih baik daripada di Windows. Namun, keamanan secara keseluruhan bergantung pada praktik keamanan yang baik.
Contoh Penggunaan di Dunia Nyata:
Deployment Aplikasi Web: Banyak perusahaan menggunakan Docker untuk deploy aplikasi web yang dibangun dengan bahasa pemrograman seperti Python, Java, atau Node.js. Karena aplikasi web ini sering berjalan di server Linux, maka pengembangan dan deployment dengan Docker pada Linux lebih efisien.
Microservices Architecture: Arsitektur microservices memecah aplikasi menjadi layanan kecil yang independen. Docker sangat cocok untuk menjalankan microservices ini, dan umumnya microservices dibangun dan dijalankan pada lingkungan Linux.
CI/CD Pipeline: Dalam proses integrasi dan deploy kontinyu (CI/CD), Docker container digunakan untuk membuat lingkungan yang konsisten untuk testing dan deployment. Pipeline CI/CD biasanya berjalan pada server Linux, sehingga penggunaan Docker pada Linux lebih seamless.
baik , disini saya menggunakan unbuntu versi 20.04
Kontainer Docker dibuat dari Docker image, yang secara default diperoleh oleh Docker dari Docker Hub. Docker Hub adalah sebuah registry Docker yang dikelola oleh Docker, perusahaan di belakang proyek Docker. Sebagian besar aplikasi dan distribusi Linux umumnya memiliki Docker image yang di-hosting di Docker Hub, sehingga memudahkan pengguna untuk mengaksesnya.
Untuk memeriksa apakah Anda dapat mengakses dan mengunduh Docker image dari Docker Hub, Anda dapat melakukan pengecekan dengan menjalankan perintah berikut
docker run hello-world
Bagaimana sangat mudah sekali kan percobaan pertama kita
Untuk mengecek hasil beberapa daripada docker yang telah kita bangun bisa mengecek lagi dengan perintah
docker images
Nah untuk pembahasan selanjutnya kita akan belajar lebih nyata lagi dengan mencoba membangun website berbasis cms wordpress
Tidak ada komentar:
Posting Komentar