Instalasi kita baru saja lolos pemeriksaan menyeluruh pada Chapter Verifikasi Instalasi: daemon menyala, docker run hello-world berhasil, dan plugin buildx serta Compose terpasang dengan baik. Mulai saat ini interaksi kita dengan Docker akan berlangsung hampir sepenuhnya lewat terminal, sehingga CLI adalah alat yang akan kita pegang berjam-jam setiap hari. Kabar baiknya, ratusan perintah Docker yang tampak menakutkan di awal sebenarnya mengikuti satu tata bahasa yang konsisten — bukan daftar hafalan yang acak. Chapter ini membedah tata bahasa tersebut supaya setiap perintah baru yang kita jumpai bisa kita baca, bukan kita tebak.

Pola Management Command #

Docker CLI modern disusun mengikuti pola management command: kita menyebut objek yang ingin dikelola, lalu perintah yang ingin dilakukan terhadap objek tersebut. Bentuk lengkapnya adalah docker [flag global] <objek> <perintah> [flag] [argumen]. Pola ini meniru cara kita berpikir sehari-hari: “Docker, tolong kelola volume, lakukan create, dengan nama latihan-volume”. Mari kita buktikan pola ini dengan satu perintah nyata:

bash
$ docker volume create latihan-volume

Output yang Dihasilkan:

text
latihan-volume

Mari kita telaah potongan perintah di atas satu per satu:

  1. docker — program klien yang kita panggil; klien ini hanya meneruskan permintaan ke daemon, persis seperti yang kita bahas pada Chapter Arsitektur Docker.
  2. volume — objek yang dikelola; Docker punya kelompok perintah tersendiri untuk setiap jenis objek.
  3. create — perintah atau “kata kerja” yang dilakukan terhadap objek volume.
  4. latihan-volume — argumen perintah, dalam hal ini nama volume yang ingin dibuat; output satu baris di bawahnya adalah nama yang dikembalikan Docker sebagai tanda keberhasilan.

Setiap objek populer di Docker membawa kelompok perintahnya sendiri. Tabel berikut merangkum objek yang akan paling sering kita sentuh sepanjang Course ini:

ObjekYang dikelolaContoh perintah
containerSiklus hidup container: menjalankan, menghentikan, menghapusdocker container run, docker container stop
imageImage di penyimpanan lokal: menarik, menampilkan, menghapusdocker image pull, docker image ls
volumePenyimpanan data yang dikelola Dockerdocker volume create, docker volume ls
networkJaringan virtual antar containerdocker network create, docker network ls
composeAplikasi multi-container dari compose.yamldocker compose up, docker compose ps
buildxBuild image dengan engine BuildKitdocker buildx build, docker buildx ls
systemInformasi dan pembersihan menyeluruhdocker system df, docker system prune

Dua objek terakhir punya kedudukan yang sedikit berbeda dari yang lain. Perintah compose dan buildx bukan bawaan CLI inti, melainkan plugin yang dipasang terpisah dari repositori resmi Docker sebagai paket plugin Compose dan buildx — keduanya tetap dipanggil seperti perintah biasa lewat spasi, misalnya docker compose up, tanpa strip di tengah nama.

Alias Bentuk Lama dan Bentuk Modern #

Pola objek-plus-perintah baru diperkenalkan pada Docker 1.13 di awal 2017. Sebelum pola itu ada, seluruh perintah menempel langsung di akar: docker ps, docker run, docker images. Bentuk-bentuk lama tersebut tetap dipertahankan sampai sekarang sebagai alias agar jutaan skrip dan kebiasaan lama tidak rusak, sehingga kita akan menemukan keduanya di internet. Keduanya benar-benar setara — tidak ada perbedaan kecepatan maupun kemampuan:

Bentuk lamaBentuk modernFungsi
docker psdocker container lsMenampilkan daftar container
docker rundocker container runMembuat dan menjalankan container baru
docker rmdocker container rmMenghapus container
docker imagesdocker image lsMenampilkan daftar image lokal
docker rmidocker image rmMenghapus image
docker start / docker stopdocker container start / docker container stopMenyalakan / menghentikan container

Satu alias modern lain yang menarik: docker build sekarang menjadi pintasan ke docker buildx build karena BuildKit menjadi engine build default sejak Docker 23.0. Perpindahan ini tidak mengubah cara kita mengetik perintah build, hanya memindahkan mesin yang bekerja di belakangnya.

Flag Global CLI #

Selain flag per perintah, program docker menerima beberapa flag global yang menempel pada program itu sendiri dan harus ditulis sebelum objek dan perintah. Flag yang sama tapi ditulis setelah perintah akan dianggap flag milik perintah tersebut — posisi menentukan arti. Lima flag berikut adalah yang paling sering berguna:

FlagBentuk pendekFungsi
--config—Lokasi berkas konfigurasi klien (default ~/.docker)
--context-cNama context daemon yang dituju
--debug-DMengaktifkan keluaran debug pada klien
--host-HAlamat endpoint daemon untuk satu pemanggilan
--log-level-lTingkat log klien: debug, info, warn, error, fatal

Mari kita coba --host untuk melihat efek flag global secara langsung:

bash
$ docker --host unix:///var/run/docker.sock ps

Output yang Dihasilkan:

text
CONTAINER ID   IMAGE   COMMAND   CREATED   STATUS   PORTS   NAMES

Mari kita telaah perintah dan output di atas:

  1. --host unix:///var/run/docker.sock — kita menyuruh klien berbicara ke daemon lewat Unix socket lokal; alamat ini memang endpoint bawaan, jadi hasilnya sama dengan docker ps polos.
  2. Posisi flag sebelum ps — karena ditulis sebelum perintah, flag ini dibaca sebagai flag global; coba pindahkan ke belakang ps dan maknanya berubah menjadi flag milik ps.
  3. Output hanya baris judul — di mesin kita belum ada container yang sedang berjalan, sehingga docker ps hanya mencetak kepala tabel; arti tiap kolom tabel ini kita bedah tuntas pada Chapter Melihat Container.

Tiga Cara Membaca Bantuan #

Menghafal seluruh perintah Docker adalah pekerjaan yang sia-sia; yang perlu kita hafal adalah cara bertanya. Ada tiga bentuk bantuan yang saling melengkapi. Pertama, docker --help menampilkan peta seluruh perintah tingkat atas. Kedua dan ketiga, docker help <perintah> serta docker <perintah> --help keduanya menampilkan bantuan untuk satu perintah tertentu — dua bentuk ini setara, tinggal pilih yang paling nyaman diketik. Untuk objek atau management command, bantuan akan mencantumkan seluruh subperintah yang tersedia:

bash
$ docker container --help

Output yang Dihasilkan:

text
Usage:  docker container COMMAND

Manage containers

Commands:
  attach      Attach local standard input, output, and error streams to a running container
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  diff        Inspect changes to files or directories on a container's filesystem
  exec        Execute a command in a running container
  export      Export a container's filesystem as a tar archive
  inspect     Display detailed information on one or more containers
  kill        Kill one or more running containers
  logs        Fetch the logs of a container
  ...
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  top         Display the running processes of a container
  wait        Block until one or more containers stop, then print their exit codes

Run 'docker container COMMAND --help' for more information on a command.

Daftar perintah di tengah output dipotong agar ringkas. Mari kita telaah bagian-bagian pentingnya:

  1. Baris Usage: — pola pemakaian objek ini: docker container COMMAND, persis tata bahasa objek-plus-perintah yang kita bahas di awal chapter.
  2. Manage containers — deskripsi satu baris yang menjelaskan wilayah kerja objek container.
  3. Daftar Commands: — seluruh “kata kerja” yang berlaku untuk container, dari create sampai wait; nama-nama ini akan muncul terus pada chapter-chapter berikutnya di Section ini.
  4. Baris terakhir — petunjuk pola rekursif: tambahkan --help di belakang subperintah, misalnya docker container run --help, untuk membaca flag lengkap milik run.

Dengan tata bahasa, tabel objek, alias, flag global, dan tiga pintu bantuan kini berada di tangan kita, membaca dokumentasi Docker akan terasa seperti membaca kalimat, bukan kata per kata. Namun struktur saja belum cukup untuk mengenali lingkungan kerja: kita butuh dua perintah yang berperan sebagai panel instrumen. Chapter berikutnya, docker help dan docker version, membedah output docker --help, docker version, dan docker info sampai ke baris terakhirnya.

Referensi #