Belajar Docker – Pull Image, Stop Container

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).

image host

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&gt;, kita juga bisa melakukan pull atau menarik image-nya saja.

Yuk kita coba gunakan perintah pulluntuk 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:80digunakan 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).

image host

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).

image host

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.

image host

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.

Leave a Comment