Hai semuanya, apa kabar? Kali ini saya mau lanjutin nulis tentang Docker. Masih yang basic hehe.
Di tulisan kemarin kita udah belajar ginama cara menjalankan CT dengan image yang diambil dari Docker Hub. Sekarang kita coba untuk coba hal lain.
Misalnya, kita coba jalankan CT namun menggunakan image lain yang tersedia di Docker Hub. Kita coba NGINX (gambar 1).
gambar 1 – NGINX di Docker Hub
Pada gambar 1 menampilkan NGINX yang tersedia pada Docker Hub. Ditampilkan juga perintah yang dapat digunakan untuk pull image tersebut dari Docker, yaitu (sudo) docker pull nginx
.
Selain langsung menjalankan CT dengan menggunakan sintaks docker run <nama service/app>
;, kita juga bisa melakukan pull atau menarik image-nya saja.
Yuk kita coba gunakan perintah pull
untuk menarik image NGINX dari Docker Hub.
phantom-zorin2@phantom-zorin:~$ sudo docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
f11c1adaa26e: Pull complete
c6b156574604: Pull complete
ea5d7144c337: Pull complete
1bbcb9df2c93: Pull complete
537a6cfe3404: Pull complete
767bff2cc03e: Pull complete
adc73cb74f25: Pull complete
Digest: sha256:67682bda769fae1ccf5183192b8daf37b64cae99c6c3302650f6f8bf5f0f95df
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
Secara otomatis, apabila kita pull image dari Docker, maka yang akan ditarik adalah image yang terbaru (latest). Sebenarnya kita juga bisa untuk pilih versi tertentu, menggunakan tag, namun untuk hal tersebut gak saya tulis di tulisan ini hehehe.
Selanjutnya, untuk melihat image apa saja yang sudah kita miliki/tersimpan pada host, kita bisa menggunakan perintah sudo docker images
.
phantom-zorin2@phantom-zorin:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest fffffc90d343 13 days ago 188MB
ghcr.io/netbootxyz/netbootxyz latest c3f77b7522d5 4 weeks ago 176MB
hello-world latest d2c94e258dcb 14 months ago 13.3kB
Dengan menggunakan perintah sudo docker images, maka kita bisa melihat apa saja image yang ada pada host kita, beserta dengan detail lain seperti tag, ID, tanggal dibuatnya image tersebut, dan ukuran image.
Sekarang mari kita coba buat CT NGINX, dari image yang tadi sudah di-pull. Namun, ada beberapa tambahan pada sintaks yang akan digunakan
Perlu menambahkan sintaks untuk port mapping, singkatnya merupakan teknik yang dilakukan untuk membuat koneksi antara port pada host dan port yang ada pada CT. Hal ini diperlukan karena CT dijalankan dalam environment yang terisolasi.
Perintah yang akan kita gunakan adalah sudo docker run -p 8000:80 nginx
. Bagian -p 8000:80
digunakan untuk port mapping dimana menghubungkan port 8000 pada host ke port 80 pada CT.
phantom-zorin2@phantom-zorin:~$ sudo docker run -p 8000:80 nginx
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Sourcing /docker-entrypoint.d/15-local-resolvers.envsh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
...
CT berhasil berjalan. Selanjutnya kita cek peramban web (web browser) dan kunjungi URL localhost:8000 (gambar 2).
gambar 2 – NGINX berhasil berjalan
Pada Terminal yang kita gunakan untuk mengakses Docker, saat CT berjalan dengan perintah docker run biasa, maka CT akan dijalankan di mode foreground sehingga Terminal “tidak bisa digunakan” untuk hal lain (gambar 3).
gambar 3 – terminal sedang menjalankan CT NGINX di foreground
Kita juga bisa menjalankan CT secara detached atau dalam background mode. Caranya adalah menggunakan tambahan flag -d
. Kita bisa stop CT yang sedang berjalan dengan menekan tombol Ctrl + C.
Perintah yang kita gunakan untuk menjalankan CT Docker dalam mode background adalah sudo docker run -d -p 8000:80 nginx
. Gambar 4 menampilkan Terminal yang sedang menjalankan CT NGINX secara detached, daftar CT yang berjalan (sudo docker ps), dan tampilan test page dari NGINX di peramban web.
gambar 4
CT berhasil berjalan di background dan halaman testing dari NGINX masih bisa diakses. Saat menjalankan perintah sudo docker ps
juga CT NGINX ini terdaftar.
Selanjutnya, kita coba untuk menghentikan/stop CT yang sedang berjalan. Pertama, kita cek dulu nama atau ID dari CT yang berjalan. Kemudian kita bisa gunakan perintah sudo docker stop <nama CT/ID>
. Namun, apabila kita ingin menggunakan CT ID untuk stop CT-nya, kita tidak perlu menuliskan keseluruhan ID-nya. Cukup beberapa karakter awal dari ID (pastikan terlebih dulu apakah ada CT lain dengan sebagian kombinasi ID yang sama).
Kita coba yuk!
phantom-zorin2@phantom-zorin:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
3e8d87f4da81 nginx "/docker-entrypoint.…" 8 minutes ago Up 8 minutes 0.0.0.0:8000->80/tcp, :::8000->80/tcp
NAMES
youthful_mendel
phantom-zorin2@phantom-zorin:~$ sudo docker stop 3e8
3e8
phantom-zorin2@phantom-zorin:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Kita berhasil untuk stop CT NGINX. Saat dicek menggunakan perintah sudo docker ps
juga sudah tidak ada. Artinya menyatakan bahwa CT NGINX berhasil dihentikan.