Tutorial Docker— #7 Docker Images dan Containers

Seri Belajar Docker dalam Bahasa Indonesia

Ghifari Nur
netSHOOT
8 min readFeb 24, 2021

--

Halo, bagi kalian yang belum paham mengenai Docker bisa membaca artikel sebelumnya:

Saatnya kita memperdalam lagi yah, pembahasan mengenai Docker images.

Docker Images

Pengertiannya secara singkat yaitu kumpulan dari beberapa commands/instructions yang terstruktur.

Docker images punya 2 tingkatan, top layer dan common layer (layer yang tepat berada di bawah “top layer”). Top layer menggunakan permission Read-Write (RW) sedangkan common layer menggunakan permission Read-Only (RO).

Kalo kalian tau, setiap images dan containers secara default punya nickname dan ID yang selalu berbeda (unique) diambil dari Docker Hub.

Docker Hub sebagai cloud service dan kumpulan images dari berbagai developer termasuk official partner dari Docker (MySQL, mongoDB, Laravel, Nginx, Apache, dll)

Docker Hub

Kita bisa akses Docker Hub disini. Berbagai aktifitas seperti push dan pull bisa dilakukan oleh pengguna Docker client seperti kita saat ini.

Ngga perlu basa-basi. yuk kita mulai tutorial menggunakan Docker Hub.

Overview

  • Buka Docker Hub
  • Daftar/masukkan email dan password
  • Dashboard meliputi repository, images, organization, dan audit logs

Search

Karena daritadi menggunakan Web based, yuk saatnya kita pindah ke CLI untuk merasakan mencari images dengan Docker command

  • Kita coba mencari images dan containers dari official repository dengan klik explore di navbar
  • Selanjutnya, kita akan menggunakan terminal. Coba mencari images python

Catatan:

python (kalo hanya ARG python maka docker membaca versi latest)

python=3.6 (docker membaca python versi 3.6)

  • Gunakan filter untuk mencari keyword tertentu

Catatan:

- -filter “keyword yang ingin difilter” <nama images>

is-official=true (official dari nama kolom nya. True adalah sebuah nilai seperti true/false

  • Memunculkan images
  • Memunculkan images yang lebih spesifik (contohnya ubuntu)

Catatan:

ubuntu:18.04 (nama images beserta tag/versi nya)

Push & Pull

Pull

Bisa dikatakan pull mirip dengan download. Jadi, kita akan mengambil images dari Docker Hub ke Docker Host PC kita.

  • Pull images Nginx dengan tag latest
  • Pull images Nginx dengan seluruh tag yang tersedia di Docker Hub

Push

Kita pun bisa push/upload images dan container ke Docker Hub

  • Buat repository di Docker Hub
  • Beri nickname dan description pada repository yang akan kita buat
  • Atur privileges, repository nya akan dimunculkan ke public atau private
  • Sekarang, Docker pun bisa terintegrasi dengan Github dan Bitbucket (opsional) dan tekan create
  • Berikut tampilan dari admin yaitu kita sendiri, akan ada Docker push command untuk upload dari Docker Host/Machine yang kita pake sekarang ke Docker Hub
  • Berikut tampilan dari publik. Publik bisa pull/download repository sesuka hati ke Docker Host nya
  • Saatnya kita push suatu images ke Docker Hub. Buka CLI dan login ke Docker Hub
  • Kita membuat images baru terlebih dahulu

Catatan:

gipeypey (nama akun Docker Hub)

ubuntu_gipey (nama repository)

cc-nginx (custom tag/versi untuk images kita yang baru)

  • Push images ke Docker Hub
  • Cek Docker Hub

Inspect & History

Sebelumnya, kita udah mencoba variasi command dari docker images.Nah supaya lebih detail setiap images, maka kita bisa menggunakan argumen inspectdan history

Inspect

Command inspect akan memunculkan informasi yang detail dari setiap object dalam images yang terdaftar di Docker Engine milik kita. inspect akan lebih berguna kalau digunakan untuk debugging

  • Melihat images dengan nama yang spesifik
  • Gunakan command inspect untuk melihat informasi detail dari image tersebut dalam bentuk JSON array

Catatan:

id (image id dari ubuntu:latest)

RepoTags (versi dari image ubuntu)

RepoDigests (64 bit hex number)

Container (container identifier)

Container config (configuration detail tentang image tersebut)

Architecture (arsitektur dari images tersebut)

OS (ubuntu keluarga dari Linux)

  • Karena informasi tersebut sangat banyak, maka kita bisa filter dengan cara

Catatan:

{{.RepoTags}} (salah satu dari variable kunci dalam informasi images)

  • atau convert format tersebut menjadi sebuah file .txt dengan cara

Catatan:

ubuntu (images yang sesuai di command docker images)

inspect_report_ubuntu.txt (nama dan ekstensi file)

History

docker history akan menampilkan log (created by) dalam sebuah images.

  • Kita coba menggunakan history dengan img_apache yang sudah kita install beberapa waktu lalu

Pruning & Removing Images

Remove

  • Hapus image menggunakan rm
  • Hapus image menggunakan rmi untuk image ID

Jika kalian menggunakan -- all-tags akan terhapus image yang memiliki ID yang sama

Docker Container

Container Run V.S Create

Daritadi kita sudah belajar membuat images, push & pull, filtering, dll. Tapi, kita lupa dengan container yang pernah kita buat pada materi sebelumnya. Nah, saat nya kita belajar container lebih dalam.

  • Membuat container sekaligus terdapat images dengan nama custom untuk images busybox

Catatan:

Created (status yang baru saja dibuat, belum running)

-it (images yang sesuai di command docker images)

- -name cc-busybox (nama custom yaitu cc-busybox-1 untuk container kita)

busybox:latest (image dari Docker Hub)

  • Membuat container, menjalankan, dan sudah terdapat images didalamnya hanya menggunakan satu baris command
cc-busybox-2 status up 12 sec.

Start

  • Menjalankan container cc-busybox-1 yang baru saja dibuat dengan status “created”
  • Cek kembali

Stop

  • Menghentikan container cc-busybox-2

Catatan:

Yang jadi pertanyaan adalah, mengapa cc-busybox-2 ngga ada di container list?

Coba scroll keatas, kalian sudah eksekusi command --rm --name cc-busybox-2 , argumen --rm adalah menghapus container saat ngga dipakai/stop/running supaya storage kita ngga penuh

Restart

  • Gunakan restart saat terjadi masalah di container tersebut

Catatan:

--time 5 (buffer selama 5 detik)

Rename

  • Kalo kalian pengen ubah nama container karena suatu hal, gunakan command dibawah ini

Catatan:

cc-busybox-1 (nama container yang saat ini)

busybox1 (nama container yang baru)

Attach

Attach berguna untuk melihat standard I/O dan standard error di Docker client

  • Masuk ke environment pada container busybox1
  • Saat environment ditutup menggunakan command exit, maka container tersebut akan berhenti process nya

Execute

  • Menggunakan command exec harus dalam keadaan container sedang running
  • exec berguna saat kita hanya mengeksekusi satu command saja dan ngga akan memberhentikan process dari container

Catatan:

pwd (salah satu command linux, kalian bisa menggunakan command lainnya)

Port Mapping

Pada materi sebelumnya, kita sudah mencoba port mapping pada Expose Configuration. Port mapping bertujuan untuk mengubah port pada container.

  • Port mapping pada Expose Configuration

Catatan:

cont_nginx (nama custom untuk container)

-p 8080:80/tcp (port default container yaitu 8080 dan 80 adalah port untuk HTTP)

Apa jadinya jika port mapping command hanya -P ? maka, docker akan memberikan random port container secara otomatis

  • Cara melihat port yang digunakan oleh container

Clean Up

  • Menghapus container dengan rm

Catatan:

Saat menghapus container, harus dalam keadaan berhenti/stop process

  • Kalau masih mau menghapus container saat keadaan running/up gunakan --force
  • Gunakan banner/notification saat container tersebut dihapus
  • Menghapus seluruh container yang ngga terpakai (exited & dangling)

Have a nice day!

Ghifari Nur Athoillah, Mahasiswa di Program Profesi CCIT-Fakultas Teknik Universitas Indonesia

--

--