Baca tentang Dockerfile Directives: ENTRYPOINT untuk melihat catatan sebelumnya. Disini akan dibahas mengenai Dockerfile Directives: EXPOSE. Langsung saja.

Pertama, buat direktori baru bernama ApacheInstall di dalam direktori Builds, buat juga file Dockerfile nya.

 

Isikan Dockerfile dengan :

# Based Image CentOS 7 dan Install Apache

FROM centos:latest
MAINTAINER miss

RUN yum update -y
RUN yum install -y httpd net-tools

RUN echo "Ini adalah Costum Image. Selamat Datang:)" > /var/www/html/index.html

ENTRYPOINT apachectl "-DFOREGROUND"

Screenshot from 2018-07-03 14-11-03.png

Lalu build image baru menggunakan Dockerfile diatas dengan nama image centos7:apache2:v1 .

$ docker build -t centos/apache2:v1 .

Screenshot from 2018-07-03 14-12-06.png

Lihat base image :

$ docker images

Screenshot from 2018-07-03 19-46-08

Berikut akan saya tampilkan cara menjalankan 3 container berbeda sebelum ada command EXPOSE :

PERTAMA

Kita akan menjalankan container baru dengan cara biasa dan mengaksesnya dengan IP Address menggunakan image centos7/apache2:v1 tadi :

$ docker run -d --name apacheweb1 centos/apache2:v1

Screenshot from 2018-07-03 19-47-05.png

Note : perintah –name merupakan perintah untuk membuat nama container sesuai selera.

Pastikan sudah berjalan :

$ docker ps

Screenshot from 2018-07-03 19-48-46

Lihat IP Address dari Container yang bernama apacheweb1 tadi :

$ docker inspect apacheweb1 | grep IPAdd

Screenshot from 2018-07-03 19-47-35

Lalu lihat tampilan web menggunakan IP Address di atas :

$ elinks http://172.17.0.2

Screenshot from 2018-07-03 19-48-14.png

Coba stop container apacheweb1 :

$ docker stop apacheweb1

Screenshot from 2018-07-03 19-50-08.png

Dan coba lihat file tampilan index.html nya :

$ docker exec apacheweb1 /bin/cat /var/www/html/index.html

Screenshot from 2018-07-03 19-49-19

Tidak ada respon. Mengapa? Karena container sudah dimatikan.

KEDUA

Perbedaannya dengan container sebelumnya yaitu adanya opsi -P yaitu agar container mendapat redirect port otomatis dengan perintah :

$ docker run -d --name apacheweb2 -P centos/apache2:v1

Screenshot from 2018-07-03 19-50-45.png

Dan ternyata lihat container yang sedang aktif, dalam kolom PORT masih kosong :

Screenshot from 2018-07-03 19-51-00.png

 

KETIGA

Kita buat opsi redirect port manual dengan opsi -p (huruf kecil) dengan menjalankan perintah berikut :

$ docker run -d --name apacheweb3 -p 8080:80 centos/apache2:v1

Screenshot from 2018-07-03 19-52-08

Lalu lihat base image :

$ docker images

Screenshot from 2018-07-03 19-52-37.png

Cek di tampilan http://localhost:8080 maka akan terlihat tampilan web karena port 80 sudah dialihkan ke 8080.

$ elinks http://localhost:8080

Screenshot from 2018-07-03 20-18-23.png

Lalu stop container.

$ docker stop apacheweb3

Screenshot from 2018-07-03 19-54-04.png

 

Nah, setelah mencoba ketiga cara di atas, kini coba tambahkan opsi EXPOSE di dalam file Dockerfile :

EXPOSE 80

Screenshot from 2018-07-03 19-54-41.png

Fungsinya nanti akan secara otomatis redirect port mulai dari 37268.

Lalu build image bar dengan nama centos7/apache:v2 :

$ docker build -t centos7/apache2:v2 .

Screenshot from 2018-07-03 19-55-43.png

Lalu coba jalankan container baru :

$ docker run -d --name apacheweb4 -P centos7/apache2:v1

Screenshot from 2018-07-03 19-56-19.png

Dan lihat, port secara otomatis akan keredirect ke 32768.

$ docker ps

Screenshot from 2018-07-03 19-56-41.png

Dan bisa diuji coba kembali :

$ elinks http://localhost:32768

Screenshot from 2018-07-03 19-57-15.png

 

 

Sekian:)