Pengertian Dockerfile
Dockerfile merupakan script yang yang berisi dari serangkaian perintah yang akan dieksekusi secara otomatis dan berurutan untuk membuat sebuah image.
Dengan Docker, proses akan sangat ringan dan cepat dibandingkan dengan virtual mesin yang berbasis hypervisor. Besarnya overhead, hanya sebesar layanan aplikasi yang dijalankan pada container itu sendiri. Selain itu, para developer dapat menjalankan banyak container dalam mesin host.
Docker dapat membuat image secara otomatis dengan membaca instruksi dari Dockerfile yang dibuat. Dockerfile adalah dokumen teks yang berisi semua perintah yang dapat dipanggil pengguna menggunakan baris perintah untuk merakit sebuah Image. dengan menggunakan docker build, user dapat membuat sebuah otomatasi yang menjalankan beberapa instruksi baris perintah secara berurutan
1. Pertama buat direkori baru dan masuk kedalamnya dengan menjalankan perintah :.
sudo mkdir -p /latihan/[DIR Baru]
sudo chown -R ubuntu:ubuntu /latihan
cd /latihan/[DIR BARU]
Disini saya membuat direktori latihan sebagai parent.
2. Buat file Dockerfile.
vim Dockerfile
......
# menggunakan image whalesay sebagai image dasar
FROM docker/whalesay:latest
# Install fortunes
RUN apt -y update && apt install -y fortunes
# Jalankan Perintah
CMD /usr/games/fortune -a | cowsay
3. Selanjutnya kita akan membuild/membangun image dari dockerfile yang sudah dibuat, jalankan perintah berikut: .
sudo docker build -t docker-whale .
sudo docker image ls
......
REPOSITORY TAG IMAGE ID CREATED SIZE
docker-whale latest 4880f593eaba 13 seconds ago 276 MB
4. Selanjutnya Jalankan image yang sudah dibangun: .
sudo docker run docker-whale
......
/ "Where humor is concerned there are no \
| standards -- no one can say what is |
| good or bad, although you can be sure |
| that everyone will. |
| |
\ -- John Kenneth Galbraith /
----------------------------------------
\
\
\
## .
## ## ## ==
## ## ## ## ===
/""""""""""""""""___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\______/
Dockerfile Latihan 2
1. Pertama buat direktori baru dan masuk kedalamnya dengan menjalankan perintah berikut :.
sudo mkdir -p /latihan/[DIR BARU]
sudo chown -R ubuntu:ubuntu /latihan
cd /latihan/[DIR BARU]
2. Buat Dockerfile dan isikan perintah berikut : :.
sudo vim Dockerfile
.......
# Jadikan python sebagai image parent
FROM python:2.7-slim
# atur working direktori menjadi /app
WORKDIR /app
# copy content dari direktori saat ini ke container di /app
ADD . /app
# install packet yang dibutuhkan di dalam fil requirements.txt
RUN pip install --trusted-host pypi.python.org -r requirements.txt
# Make port 80 available to the world outside this container
EXPOSE 80
# Define environment variable
ENV NAME World
# jalankan app.py saat container di deploy
CMD ["python", "app.py"]
3. Buat file requirements.txt : :.
sudo vim requirements.txt
.......
Flask
Redis
4. Buat file requirements.txt : :.
sudo vim app.py
.......
from flask import Flask
from redis import Redis, RedisError
import os
import socket
# Connect to Redis
redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2)
app = Flask(__name__)
@app.route("/")
def hello():
try:
visits = redis.incr("counter")
except RedisError:
visits = "<i>cannot connect to Redis, counter disabled</i>"
html = "<h3>Hello {name}!</h3>" \
"<b>Hostname:</b> {hostname}<br/>" \
"<b>Visits:</b> {visits}"
return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname(), visits=visits)
if __name__ == "__main__":
app.run(host='0.0.0.0', port=80)
5. Bangun image dari Dockerfile yang dibuat :.
sudo docker build -t friendlyhello .
sudo docker image ls
6. Uji jalankan image dengan perintah :.
sudo docker run -d -p 4000:80 friendlyhello
7. Uji browsing app dengan perintah :.
curl http://localhost:4000
Latihan Publish Image
1. sebelum menjalankan perintah berikut pastikan jika sudh memiliki akun di hub docker, jika belum memiliki akun silahkan daftar di https://hub.docker.com. oke langsung saja, pertama login dengn docker id yang sudah dibuat, jalankan perintah berikut :.
sudo docker login
...........
#masukan username
#masukan password
2. tag image yang sudah dibuat, jalankan perintah berikut :.
sudo docker push [USER docker]/latihan:[DIR-YG-AKAN-DI-PUSH]
sudo docker image ls
3. push image ke repositori dan uji jalankan image pada repositoridocker hub yang sudah dibuat, jalankan perintah berikut :.
sudo docker push [USER docker]/latihan:[DIR-YG-AKAN-DI-PUSH]
sudo docker run -d -p 4000:80 [USER]/latihan:[DIR-YG-AKAN-DI-PUSH]
sudo docker container ls
4. uji browsing app, jalankan perintah berikut :.
curl http://localhost:4000
QUIZ
1. Buat Dockerfile untuk menjalankan aplikasi yang bersumber dari https://github.com/gabrielecirulli/2048, jalankan perintah berikut :.
sudo mkdir -p /latihan/2048/
cd /latihan/2048
sudo vim Dockerfile
...........
FROM nginx:latest
MAINTAINER leon
COPY 2048 /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
lalu clone file dari git https://github.com/gabrielecirulli/2048, jalankan perintah berikut :.
git clone https://github.com/gabrielecirulli/2048
selanjutnya build image berdasarkan docker file yang sudah dibuat, jalankan perintah berikut :.
sudo docker build -t 2048 .
selanjutnya jalankan image, jalankan perintah berikut :.
docker run -d -p 8080:80 --name games-2048 2048
sudo docker container ls -a
2. selanjutnya Push image yang sudah dibuat, jalankan perintah berikut :.
sudo docker tag friendlyhello [USER docker]/latihan:2048
sudo docker push [USER docker]/latihan:2048
sudo docker run -d -p 4000:80 [USER]/latihan:2048
0 comments
Post a Comment