Daemon di sisi server kini mengikuti kemauan kita, tetapi setiap perintah masih harus melewati pihak yang paling sering kita tatap: docker CLI. Bawaannya lumayan, walau bukan paling nyaman — docker ps menampilkan tujuh kolom yang sebagian jarang kita baca, perintah docker context menyimpan pilihan daemon diam-diam di sebuah berkas, dan kredensial registry tersimpan dengan pengodean yang mudah dibuka bila tidak dikonfigurasi. Seluruh preferensi klien ini hidup di folder ~/.docker, dan memahaminya berarti menguasai tiga lapis pengaturan: berkas config.json, mekanisme context, dan environment variable. Chapter ini membuka ketiganya berurutan, lalu menutup dengan urutan prioritas yang menentukan mana yang menang ketika semuanya bicara serentak.
Berkas config.json di Folder .docker #
Saat pertama kali menjalankan perintah docker yang menyimpan sesuatu — misalnya docker login — folder ~/.docker beserta berkas config.json di dalamnya tercipta otomatis. Berkas ini adalah rumah preferensi klien: format tampilan perintah, alias, penyimpan kredensial, hingga context yang sedang aktif. Berikut contoh isinya yang menyatukan keempat pengaturan tersebut:
{
"psFormat": "table {{.ID}}\t{{.Image}}\t{{.Status}}\t{{.Names}}",
"aliases": {
"containers": "container ls",
"img": "image ls"
},
"credsStore": "desktop",
"currentContext": "server-latihan"
}Mari kita telaah peran setiap kunci pada berkas di atas:
psFormat— template tampilan untukdocker ps; kita bedah mekanismenya pada bagian berikutnya karena kunci ini paling cepat terasa manfaatnya.aliases— pemetaan nama panggilan ke perintah aslinya;docker containerskini berartidocker container lsdandocker imgberartidocker image ls. Alias tidak boleh menimpa perintah bawaan yang sudah ada, jadi pilihlah nama yang benar-benar baru.credsStore— nama program penyimpan kredensial yang mengambil alih simpanan login registry; nilaidesktopmemakai penyimpanan aman bawaan Docker Desktop. Tanpa kunci ini, kredensial tercatat di berkas config dengan pengodean yang mudah dibuka — cukup untuk kebingungan, tidak untuk keamanan.currentContext— nama context yang sedang aktif; nilainya berubah setiap kali kita menjalankandocker context use, sehingga jarang diketik manual.
Format Tampilan docker ps #
Kunci psFormat layak dapat perhatian pertama karena mengubah pengalaman harian dalam hitungan detik. Nilainya adalah template dengan sintaks kurung kurawal ganda: table di awal meminta output bergaya tabel dengan baris judul, \t memisahkan kolom, dan {{.NamaKolom}} memilih data yang ditampilkan. Dengan template pada contoh sebelumnya, docker ps kini hanya menampilkan empat kolom yang paling sering kita perlukan:
$ docker psOutput yang Dihasilkan:
CONTAINER ID IMAGE STATUS NAMES
f7c2a91b3e55 nginx:latest Up 2 hours webMari kita telaah bagian-bagian template tersebut:
table— prefiks yang memerintahkan CLI menggambar baris judul dan meratakan kolom dengan spasi; tanpa prefiks ini, output berupa larik baris tanpa judul.{{.ID}}— kolom ID container; tanda titik menunjuk field pada data container, dan nilai yang tampil adalah bentuk pendek 12 karakter.\tsebagai pemisah — setiap tab melahirkan satu kolom baru pada mode tabel, dalam urutan penulisan.{{.Names}}di akhir — nama container sengaja ditempatkan paling kanan agar mudah dibaca sekalipun kolom sebelumnya panjang; urutan kolom sepenuhnya keputusan kita, bukan keputusan Docker.
Pola yang sama berlaku untuk perintah lain lewat kunci sejenis — imagesFormat untuk docker images, atau flag satu kali --format ketika ingin format khusus tanpa mengubah konfigurasi permanen. Mekanisme penuh template ini kita pakai intensif pada Section Dasar Docker CLI.
Docker Context untuk Banyak Daemon #
Satu laptop boleh berbicara dengan banyak daemon: daemon lokal di laptop, daemon di server latihan kantor, daemon di VM uji coba. Docker context adalah mekanisme resmi untuk itu — setiap context menyimpan satu endpoint beserta konfigurasinya, dan CLI cukup berganti context untuk berganti daemon. Membuat context yang menunjuk ke server Budi di kantor hanya membutuhkan satu perintah:
$ docker context create server-latihan --docker "host=ssh://[email protected]"
$ docker context use server-latihan
$ docker context ls
$ docker context showOutput yang Dihasilkan:
server-latihan
Current context is now "server-latihan"
NAME DESCRIPTION DOCKER ENDPOINT ...
default Current DOCKER_HOST based configuration unix:///var/run/docker.sock ...
server-latihan * ssh://[email protected] ...Kolom ERROR dan beberapa kolom lain pada docker context ls dipotong agar ringkas. Mari kita telaah baris-baris di atas:
docker context create— context baru bernamaserver-latihanlahir dengan endpoint ssh ke server kantor; nilaihost=ssh://...memakai SSH sebagai jalur transport, sehingga autentikasi mengikuti kunci SSH yang sudah kita punya.docker context use— memindahkan CLI ke context tersebut mulai perintah berikutnya; perintah ini diam-diam menulis ulang kuncicurrentContextdiconfig.json, itulah asal nilai pada contoh berkas kita di atas.docker context ls— menampilkan seluruh context; tanda bintang di sisi nama menandai context yang sedang aktif — perhatikan bahwa bintang kini menempel padaserver-latihan, bukandefault.docker context show— mencetak nama context aktif saat ini; berguna untuk memastikan kita tidak sedang mengetik perintah ke server yang salah.
Sejak perpindahan tersebut, seluruh perintah docker di terminal kita mendarat di server kantor, bukan di daemon lokal. Agar contoh-contoh selanjutnya tetap menunjuk laptop sendiri, mari kita kembalikan CLI ke context default:
$ docker context use defaultOutput yang Dihasilkan:
default
Current context is now "default"Endpoint ssh pada context di atas akan kembali kita pakai pada Chapter Mengatur Akses Docker sebagai jalur remote yang paling aman; mekanisme context sendiri dibedah lebih jauh lagi pada Chapter Memahami Docker Context di Section Dasar Docker CLI.
Environment Variable Klien #
Lapisan pengaturan ketiga beredar di lingkungan proses shell kita. Lima variable berikut dibaca docker CLI setiap kali berjalan, dan semuanya berguna untuk skrip serta sesi sementara:
| Variable | Kegunaan | Contoh nilai |
|---|---|---|
| DOCKER_HOST | Alamat daemon yang dituju klien, menimpa endpoint context | tcp://server.example.com:2376 |
| DOCKER_CONTEXT | Nama context aktif untuk sesi ini | server-latihan |
| DOCKER_CONFIG | Lokasi folder config klien pengganti ~/.docker | ~/.docker |
| DOCKER_TLS_VERIFY | Mengaktifkan verifikasi sertifikat TLS klien | 1 |
| DOCKER_CERT_PATH | Folder berkas sertifikat klien untuk koneksi TLS | ~/.docker |
Variable DOCKER_TLS_VERIFY dan DOCKER_CERT_PATH berpasangan dengan konfigurasi TLS pada daemon yang kita bahas tuntas pada Chapter Mengatur Akses Docker — keduanya menginstruksikan CLI memverifikasi identitas server jauh sebelum bertukar perintah.
Urutan Prioritas Ketiga Lapis #
Ketiga lapis pengaturan kini sudah kita kenal, dan pertanyaannya tinggal satu: ketika config.json, context, dan environment variable menyimpan pilihan yang berbeda, siapa yang menang? Docker CLI membaca semuanya dengan urutan yang tetap:
- Flag per perintah —
--hostdan--contextpada baris perintah menang mutlak atas apa pun; cocok untuk kebutuhan satu kali tanpa mengubah pengaturan apa pun. - Environment variable —
DOCKER_HOSTmenimpa endpoint dari context mana pun yang aktif, sementaraDOCKER_CONTEXTmenimpacurrentContextdiconfig.json. currentContextdi config.json — pilihan persisten hasildocker context use; inilah yang berlaku pada sesi shell yang bersih dari variable.- Context default — bila tidak ada yang mengatur, CLI memakai context
defaultyang menunjuk socket unix lokal.
Klien dan server kini sama-sama terpasang dan terkonfigurasi — dari format tampilan yang rapi sampai urutan prioritas yang kita pahami. Tinggal satu ritual yang belum dilakukan: memastikan seluruh perangkat ini benar-benar bekerja sebagai satu kesatuan. Docker menyediakan segelas air penguji yang menjadi tradisi dunia container: docker run hello-world, dibarengi docker version, docker info, dan versi kedua plugin. Chapter Verifikasi Instalasi menjalankan semuanya dan mengajarkan cara membaca hasilnya seperti pemeriksa kesehatan.
Referensi #
- docker context — referensi resmi seluruh subperintah pengelolaan context.
- Use the Docker CLI — konfigurasi CLI, format keluaran, dan environment variable pada dokumentasi resmi.
- Docker Desktop — perilaku credsStore dan penyimpanan kredensial bawaan Desktop.