Kita sudah mengenal tiga pintu bantuan pada Chapter Struktur Perintah Docker, dan kali ini kita akan benar-benar membaca isi di balik pintu pertama. Perintah docker --help adalah peta lengkap seluruh kemampuan CLI, sementara docker version dan docker info adalah dua panel instrumen yang menampilkan kondisi mesin kita. Tiga perintah ini menjadi ritual pertama yang bijak dijalankan setiap kali kita berhadapan dengan mesin baru — misalnya server kantor yang baru diambil alih — karena ketiganya cepat, aman, dan tidak menyentuh container apa pun. Chapter ini membedah output ketiganya baris demi baris supaya kita tahu persis apa yang sedang kita pegang: versi komponen mana yang terpasang, bagaimana daemon menyimpan image, dan seperti apa rasanya ketika daemon sedang tidak menyala.
Membaca docker –help #
Bantuan tingkat atas dicetak dengan pola yang sama seperti docker container --help yang sudah kita lihat, tetapi isinya jauh lebih kaya karena mencakup seluruh CLI. Output berikut dipotong di beberapa tempat agar fokus pada struktur, bukan pada panjangnya:
$ docker --helpOutput yang Dihasilkan:
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
Common Commands:
run Create and run a new container from an image
exec Execute a command in a running container
ps List containers
build Build an image from a Dockerfile
pull Download an image from a registry
push Upload an image to a registry
images List images
login Log in to a registry
logout Log out from a registry
search Search Docker Hub for images
version Show the Docker version information
info Display system-wide information
Management Commands:
builder Manage builds
buildx* Docker Buildx (Docker Inc.)
compose* Docker Compose (Docker Inc.)
container Manage containers
image Manage images
manifest Manage Docker image manifests and manifest lists
network Manage networks
plugin Manage plugins
system Manage Docker
trust Manage trust on Docker images
volume Manage volumes
Commands:
attach Attach local standard input, output, and error streams to a running container
commit Create a new image from a container's changes
...
wait Block until one or more containers stop, then print their exit codes
General Options:
--config string Location of client config files (default "/home/budi/.docker")
-c, --context string Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set with "docker context use")
-D, --debug Enable debug mode
-H, --host list Daemon socket to connect to
-l, --log-level string Set the logging level ("debug", "info", "warn", "error", "fatal") (default "info")
--tls Use TLS; implied by --tlsverify
--tlsverify Use TLS and verify the remote
Run 'docker COMMAND --help' for more information on a command.
For more help on how to use Docker see our getting started guide at https://docs.docker.com/get-started/Bagian Commands: di tengah dipotong karena memuat lebih dari tiga puluh baris. Mari kita telaah struktur output di atas:
- Baris
Usage:dan tagline — pola pemakaiandocker [OPTIONS] COMMANDmengonfirmasi tata bahasa dari chapter sebelumnya: flag global dulu, lalu perintah. Common Commands— dua belas perintah yang paling sering dipakai sehari-hari; bagian ini sengaja diletakkan paling atas supaya kita tidak perlu menggulung layar untuk menemukanrunataups.Management Commands— kelompok objek yang sudah kita kenal lewat tabel objek, ditambah dua baris bertanda bintang:buildx*dancompose*; tanda*menandakan bahwa keduanya adalah plugin, bukan perintah bawaan CLI inti.Commands— daftar lengkap semua perintah tingkat atas termasuk bentuk-bentuk lama sepertiattachdancommit; daftar ini tumpang tindih dengan Common Commands karena memang memuat semuanya.General Options— flag global yang sudah kita bahas, kini lengkap dengan nilai bawaannya:--configmenunjuk ke/home/budi/.dockerdan--log-levelsecara default berada di tingkatinfo.- Dua baris penutup — pengingat pola
docker COMMAND --helpplus tautan panduan pemula resmi; baris terakhir inilah yang menjelaskan mengapa URLdocs.docker.comselalu muncul di ujung bantuan.
Anatomi docker version #
Perintah docker version sudah dua kali menjadi tamu di course ini — pada Chapter Arsitektur Docker sebagai foto keluarga komponen, dan pada Chapter Verifikasi Instalasi sebagai alat pemeriksaan kesehatan. Sekarang kita bedah output-nya secara penuh dari sisi Client sampai sisi Server. Baris-baris detail build seperti Git commit, Go version, dan waktu kompilasi dipotong agar fokus pada komponen yang benar-benar kita gunakan:
$ docker versionOutput yang Dihasilkan:
Client: Docker Engine - Community
Version: 29.9.0
API version: 1.52
OS/Arch: linux/amd64
Context: default
Plugins:
buildx: Docker Buildx (Docker Inc.)
Version: v0.28.0
compose: Docker Compose (Docker Inc.)
Version: v5.6.0
Server: Docker Engine - Community
Engine:
Version: 29.9.0
API version: 1.52 (minimum version 1.24)
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 2.1.4
runc:
Version: 1.3.2
...Baris Path di bawah setiap plugin, baris detail build seperti Git commit dan waktu kompilasi, serta komponen docker-init di bagian paling bawah dipotong agar fokus. Mari kita telaah poin-poin terpentingnya:
Client Version 29.9.0denganAPI version 1.52— sisi kiri output adalah program CLI di mesin kita; CLI membawa pemahaman protokol API versi 1.52 yang akan dipakainya untuk berbicara dengan daemon.Context: default— baris kecil ini menunjuk daemon mana yang sedang dituju; katadefaultberarti daemon lokal lewat Unix socket, dan pembahasannya menjadi chapter tersendiri setelah ini.Plugins— buildx v0.28.0 dan Compose v5.6.0 terpasang sebagai plugin CLI dari repositori resmi Docker; barisPathyang terpotong mencantumkan lokasi berkas plugin di bawah direktoricli-plugins, tempat CLI mencari plugin yang bisa dipanggil lewatdocker buildxdandocker compose.Server Engine 29.9.0denganAPI version 1.52 (minimum version 1.24)— daemon yang bicara dengan kita adalah dockerd versi sama dengan CLI; keterangan minimum version 1.24 berarti daemon masih mau melayani klien lama yang hanya menguasai API 1.24 ke atas.containerd 2.1.4danrunc 1.3.2— bukti bahwa sisi Server tersusun berlapis: dockerd menerima permintaan, containerd mengawasi siklus hidup, dan runc yang benar-benar melahirkan proses container; trio ini persis diagram pada Chapter Arsitektur Docker.
Perhatikan bahwa versi Client dan Server kebetulan sama di mesin kita karena keduanya terpasang dari repositori resmi yang sama. Keduanya tidak wajib sama — klien boleh lebih baru dari daemon atau sebaliknya, selama versi API yang dipahami keduanya masih bertemu di rentang yang didukung daemon.
Saat Daemon Tidak Menyala #
docker version juga menjadi alat diagnosis tercepat ketika sesuatu tidak beres. Karena bagian Client dicetak oleh CLI itu sendiri sedangkan bagian Server harus ditanyakan ke daemon, output akan terbelah jelas ketika daemon sedang mati. Mari kita lihat wujudnya:
$ docker versionOutput yang Dihasilkan:
Client: Docker Engine - Community
Version: 29.9.0
OS/Arch: linux/amd64
Context: default
Server:
ERROR: Cannot connect to the Docker daemon. Is the docker daemon running on this host?
errors pretty printing infoMari kita telaah apa yang sebenarnya terjadi pada output di atas:
- Bagian Client tetap utuh — CLI terpasang dan berjalan baik; galat ini membuktikan bahwa masalah ada di ujung Server, bukan pada instalasi klien.
- Pesan
Cannot connect to the Docker daemon. Is the docker daemon running on this host?— CLI gagal membuka koneksi ke endpoint context aktif; penyebab paling umum adalah service Docker yang belum dinyalakan, sehingga solusinya adalahsudo systemctl start dockerpada Ubuntu. - Baris
errors pretty printing info— pesan internal CLI ketika gagal memformat bagian Server karena datanya memang tidak pernah datang; baris ini boleh diabaikan dan bukan galat terpisah.
Bentuk kerabat dari galat ini adalah permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock, yang muncul ketika daemon hidup tetapi pengguna kita belum diberi izin ke socket. Penanganan lengkap untuk keduanya — dari menyalakan service sampai keanggotaan grup docker — sudah kita bahas pada Chapter Troubleshooting Instalasi dan Mengatur Akses Docker.
Menyaring Output dengan –format #
Output docker version yang panjang tidak enak dibaca mesin. Ketika skrip atau pipeline CI hanya membutuhkan satu potongan data, flag --format dengan template Go memungkinkan kita memetik field tertentu secara langsung:
$ docker version --format '{{.Server.Version}}'Output yang Dihasilkan:
29.9.0Template bisa juga merangkai beberapa field sekaligus dengan teks di sekelilingnya:
$ docker version --format 'Client {{.Client.Version}} / Server {{.Server.Version}}'Output yang Dihasilkan:
Client 29.9.0 / Server 29.9.0Mari kita telaah cara kerja kedua perintah di atas:
{{.Server.Version}}— ekspresi template yang membaca fieldVersiondi dalam bagianServer; nama field mengikuti struktur output aslinya, sehingga{{.Client.Version}}membaca versi sisi klien.- Tanda kutip tunggal — shell tidak boleh memakan kurung kurawal template, jadi seluruh argumen format kita bungkus dengan kutip tunggal.
- Contoh pemakaian kedua — teks bebas seperti
Clientdan/dicetak apa adanya, dan hanya bagian dalam{{ }}yang diganti nilainya; pola serupa akan kita pakai lagi untukdocker pspada Chapter Melihat Container.
Potret Sistem dengan docker info #
Jika docker version adalah kartu identitas komponen, docker info adalah potret menyeluruh kondisi mesin: berapa container yang hidup, bagaimana daemon menyimpan image, driver apa yang tersedia, sampai versi kernel host. Output berikut dipotong di bagian informasi host agar fokus pada baris yang kita bahas:
$ docker infoOutput yang Dihasilkan:
Client: Docker Engine - Community
Version: 29.9.0
Context: default
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc.)
Version: v0.28.0
compose: Docker Compose (Docker Inc.)
Version: v5.6.0
Server:
Containers: 2
Running: 0
Paused: 0
Stopped: 2
Images: 2
Server Version: 29.9.0
Storage Driver: overlayfs
driver-type: containerd.io
Logging Driver: json-file
Cgroup Driver: systemd
Cgroup Version: 2
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
...Angka pada bagian Containers dan Images mencerminkan sisa latihan di mesin kita dan pasti berbeda di mesin pembaca. Mari kita telaah baris-baris kuncinya:
Containers: 2dengan rincianStopped: 2— potret jumlah container beserta statusnya dalam satu tempat; saat ini dua container latihan lama kita berada dalam keadaan berhenti dan tidak ada yang berjalan.Server Version: 29.9.0— versi daemon, konsisten dengan hasildocker versiondi atas; dua perintah ini saling melengkapi, bukan saling menggantikan.Storage Driver: overlayfsdengandriver-type: containerd.io— sejak Docker Engine 29, instalasi baru memakai containerd image store sebagai penyimpanan image bawaan, danoverlayfsadalah driver snapshot yang menyusun layer-nya; instalasi lama masih menampilkanoverlay2sampai fitur containerd-snapshotter diaktifkan lewatdaemon.jsonseperti yang kita bahas pada Chapter Konfigurasi Docker Engine.Logging Driver: json-file— driver log bawaan; hanya driverjson-filedanlocalyang bisa dibaca kembali lewatdocker logs, topik yang kita bedah pada Chapter Melihat Log Container.Pluginsdi bawahServer— daftar driver yang tersedia di daemon: driver volumelocal, tujuh driver jaringan daribridgesampaioverlay, dan sepuluh driver log; daftar inilah yang menentukan nilai apa saja yang sah saat kita memakai flag--networkatau--log-driver.
Dua panel instrumen ini menyimpan satu baris kecil yang sampai sekarang baru kita lewati begitu saja: Context: default. Baris tersebut muncul di output docker version, di output docker info, dan di pesan galat ketika daemon mati — selalu menunjuk satu kata yang sama. Kata itu adalah nama context: mekanisme Docker untuk menjawab pertanyaan “daemon mana yang sedang saya bicarakan?”. Chapter berikutnya, Memahami Docker Context, membuka mekanisme tersebut mulai dari masalah satu CLI yang harus mengurus banyak daemon sekaligus.
Referensi #
- docker version
— referensi resmi perintah version beserta opsi
--format. - docker info — referensi resmi perintah info dan arti tiap bidangnya.
- Use the Docker CLI — pola perintah, flag global, dan cara membaca bantuan CLI.