Belajar Docker: Membuat Container menggunakan Dockerfile
Artikel kali ini membahas tentang cara untuk membuat container dengan menggunakan dockerfile sehingga image akan dibangun secara otomatis. Jika anda belum mengenal docker, anda bisa membaca tulisan sebelumnya yang berjudul Mengenal Docker dan Install Docker.
Dockerfile sendiri adalah merupakan skrip yang berisi atau terdiri dari serangkaian perintah, intruksi (argumen) yang akan dieksekusi secara otomatisasi dan berurutan untuk membangun sebuah image. Jadi akan mempermudah kita untuk tidak selalu mengetikkan perintah setiap kali kita akan menjalankan container.
1. Dockerfile Commands
Sebelum kita memulai menggunakan dockerfile untuk membuat sebuah container, kita sedikit belajar dulu tentang perintah command yang ada pada dockerfile.
ADD
Perintah ADD digunakan untuk mengcopy file dari suatu direktori ke direktori tujuan.
Jika direktori asal adalah sebuah URL, perintah add akan mendownloadnya dan menempatkannya ke direktori tujuan.
Perintah ADD digunakan untuk mengcopy file dari suatu direktori ke direktori tujuan.
Jika direktori asal adalah sebuah URL, perintah add akan mendownloadnya dan menempatkannya ke direktori tujuan.
CMD
Perintah CMD hampir sama dengan perintah RUN, CMD digunakan untuk mengeksekusi perintah yang lebih spesifik, seperti pada saat proses pembuatan container pada image.
Perintah CMD hampir sama dengan perintah RUN, CMD digunakan untuk mengeksekusi perintah yang lebih spesifik, seperti pada saat proses pembuatan container pada image.
ENTRYPOINT
ENTRYPOINT adalah argumen untuk mengeset default aplikasi yang digunakan setiap kali sebuah container dibuat menggunakan image.
ENTRYPOINT adalah argumen untuk mengeset default aplikasi yang digunakan setiap kali sebuah container dibuat menggunakan image.
ENV
ENV digunakan untuk mengeset environment variables.
ENV digunakan untuk mengeset environment variables.
FROM
FROM argument mendefinisikan sebuah base image yang akan digunakan untuk memulai membangun proses pada setiap docker image apakah itu di repositori ataupun di host kita sendiri.
FROM argument mendefinisikan sebuah base image yang akan digunakan untuk memulai membangun proses pada setiap docker image apakah itu di repositori ataupun di host kita sendiri.
WORKDIR
WORKDIR direktif digunakan untuk mengatur di mana perintah didefinisikan dengan CMD yang akan dieksekusi.
WORKDIR direktif digunakan untuk mengatur di mana perintah didefinisikan dengan CMD yang akan dieksekusi.
RUN
RUN adalah perintah yang digunakan untuk membangun docker images yang terpusat untuk mengeksekusi Dockerfiles.
RUN adalah perintah yang digunakan untuk membangun docker images yang terpusat untuk mengeksekusi Dockerfiles.
MAINTAINER
MAINTAINER adalah perintah yang tidak dijalankan tetapi di deklarasikan sebagai author field dari images.
MAINTAINER adalah perintah yang tidak dijalankan tetapi di deklarasikan sebagai author field dari images.
USER
USER direktif digunakan untuk mengatur UID (atau nama pengguna) yang menjalankan sebuah container berdasarkan dari image yang sedang dibangun.
USER direktif digunakan untuk mengatur UID (atau nama pengguna) yang menjalankan sebuah container berdasarkan dari image yang sedang dibangun.
VOLUME
Perintah VOLUME digunakan untuk mengaktifkan akses dari kontainer kita ke direktori pada mesin host.
Perintah VOLUME digunakan untuk mengaktifkan akses dari kontainer kita ke direktori pada mesin host.
EXPOSE
Perintah EXPOSE digunakan untuk menghubungkan port tertentu untuk mengaktifkan network antara proses yang berjalan di dalam container dan mesin host.
Perintah EXPOSE digunakan untuk menghubungkan port tertentu untuk mengaktifkan network antara proses yang berjalan di dalam container dan mesin host.
2. Membuat Dockerfile dan Build Image
Sekarang kita langsung saja mencoba membuat dockerfile untuk membuat suatu image yang berisi container. Sebagai contoh disini saya akan membuat container yang berisi Nginx web server. Pertama buat dulu file dockerfile dengan editor yang biasa anda gunakan, disini saya menggunakan vi
vi Dockerfile
Kemudian kita tambahkan konfigurasi docker yang didalamnya terdapat perintah dan argument untuk membuat container Nginx web server. Saya akan menggunakan sebuah base image ubuntu. Lebih lengkapnya tambhakan konfigurasi dibawah ini
# Pull base image.
FROM ubuntu:14.04RUN apt-get install -y –no-install-recommends software-properties-common# Install Nginx.
RUN \
add-apt-repository -y ppa:nginx/stable && \
apt-get update && \
apt-get install -y nginx && \
rm -rf /var/lib/apt/lists/* && \
echo “\ndaemon off;” >> /etc/nginx/nginx.conf && \
chown -R www-data:www-data /var/lib/nginx# Define mountable directories.
VOLUME [“/etc/nginx/sites-enabled”, “/etc/nginx/certs”, “/etc/nginx/conf.d”, “/var/log/nginx”, “/var/www/html”]# Define working directory.
WORKDIR /etc/nginx# Define default command.
CMD [“nginx”]# Expose ports.
EXPOSE 80
EXPOSE 443
Anda dapat melihat dengan perintah EXPOSE, saya menghubungkan dan mengaktifkan port http dan https antara container dan mesin host. Save file diatas dan keluar dari editor.
Langsung saja kita build image nya dengan menggunakan dockerfile diatas, untuk mulai membuild jalankan perintah berikut
docker build -t nginx_webserver .
Cek hasilnya dengan perintah
docker images
disitu terlihat dengan image ID 5d62ac5f7514
3. Membuat sebuah Docker Container
Dengan menggunakan image yang barusan kita build, kita akan membuat sebuah container yang berjalan didalam instance web server Nginx. Jalankan perintah berikut
docker run –name nginx_webserver_instance -p 80:80 -d nginx_webserver
Kita telah berhasil membuat container Nginx dan memforwardnya ke port 80. Untuk mengeceknya bisa menggunakan docker ps -a
docker ps -a
Kita coba jalankan perintah curl ke localhost
curl localhost
Sukses, container Nginx web server telah berjalan base image ubuntu, atau coba buka browser, buka alamat ip kita
untuk menyetop container yang berjalan kita tinggal mengetikkan docker stop <container id> ,
docker stop ca0e122c7cab
Sampai disini dulu tutorialnya untuk membuat container mengggunakan dockerfile. Sebenarnya pada satu mesin ubuntu dengan specs standar kita bisa membuat sampai dengan ratusan docker container dan setiap container itu masing-masing bisa kita manfaatkan sebagai web/app server, db server, filesystem, ataupun load balancer, jadi kita bisa mencoba untuk membuat sebuah clustering didalamnya.
Untuk materi tentang docker sendiri masih banyak sebenarnya, seperti manajemen update docker, membuat multi container, melink-kan container, clustering docker, manage image repositori, dan yang lainnya, anda bisa menuju ke halaman official docs-nya untuk dokumentasi lebih lengkapnya. Sejauh ini saya melihat official docs nya sangat lengkap dan yang jelas selalu update dan diperbaharui.
Tidak ada komentar:
Posting Komentar