Konteks di CLI Docker menyediakan mekanisme yang disederhanakan untuk berinteraksi dengan beberapa titik akhir Docker. Anda dapat mengatur konteks untuk setiap host Anda dan beralih di antara mereka dengan cepat.
Saat konteks aktif, Docker akan mengarahkan semua perintah Anda ke host itu. Jika Anda kebanyakan menggunakan instalasi Docker lokal tetapi terkadang perlu memulai container dalam produksi, konteks Docker adalah salah satu opsi yang tersedia untuk Anda.
Titik akhir Docker apa pun yang valid dapat diubah menjadi konteks. Anda dapat menyambungkan penginstalan Docker Engine reguler, kluster Docker Swarm, dan kluster Kubernetes di cloud. Setiap konteks yang tersimpan berisi semua informasi koneksi untuk host yang dirujuk.
Membuat Konteks
Konteks dikelola dengan docker context
memerintah. Anda membuat konteks baru menggunakan docker context create
. Anda harus memberikan nama untuk konteks Anda serta konfigurasi titik akhirnya.
Berikut cara membuat konteks yang terhubung ke soket Docker yang diekspos melalui TCP pada host jarak jauh:
docker context create remote-host --docker host=tcp:///my-remote-host:2735
Konteks menggunakan Docker Swarm sebagai orkestra wadah default mereka. Anda dapat mengatur ini secara eksplisit menggunakan tanda:
docker context create remote-host
--default-stack-orchestrator=swarm
--docker host=tcp:///my-remote-host:2735
Untuk membuat koneksi ke Kubernetes, ubah tipe orkestra. Anda juga harus menambahkan --kubernetes
tandai dan tentukan path ke file konfigurasi Kubernetes:
docker context create kubernetes-host
--default-stack-orchestrator=kubernetes
--kubernetes config-file=/home/username/.kube/config
--docker host=unix:///var/run/docker.sock
Memilih Konteks
Konteks aktif diaktifkan menggunakan docker context use
. Berikan nama konteks yang ingin Anda aktifkan.
docker context use remote-host
Semua perintah CLI berikutnya akan dieksekusi menggunakan titik akhir yang diberikan oleh konteks baru. Konteks aktif akan secara otomatis bertahan sampai Anda mengubahnya. Untuk beralih ke konteks yang berbeda, jalankan docker context use
lagi. Anda dapat kembali ke konteks default dengan soket Docker lokal Anda dengan meneruskan default
sebagai nama konteks.
Anda selalu dapat mengganti konteks yang dipilih dengan menambahkan --context
tandai ke perintah Docker apa pun:
docker run ubuntu:latest --context remote-host
DOCKER_CONTEXT
variabel lingkungan juga berfungsi sebagai alternatif dari --context
bendera. Mekanisme mana pun memfasilitasi peralihan sementara ke konteks yang berbeda tanpa membuat Anda menjalankan dan mengembalikan docker context use
perintah.
Menggunakan DOCKER_HOST
variabel lingkungan akan menimpa konteks aktif juga. Variabel ini memaksa Docker untuk menggunakan titik akhir daemon tertentu, bukan yang disediakan oleh konteks.
Anda dapat memeriksa konteks aktif dengan menjalankan docker context ls
. Perintah ini mencantumkan semua konteks yang tersedia dalam konfigurasi CLI Anda. Konteks aktif disorot dengan tanda bintang. Untuk menghapus konteks, jalankan docker context rm
, menyediakan nama konteks. Tidak mungkin menghapus default
konteks.
Menyinkronkan Konteks antar Mesin
File konteks disimpan di direktori konfigurasi Docker CLI Anda. Ini biasanya $HOME/.docker
di Linux. Anda akan menemukan konteks Anda di contexts
subdirektori. Setiap konteks mendapatkan foldernya sendiri yang diberi nama dengan hash unik. Di dalam, Anda akan menemukan meta.json
file yang menjelaskan konteksnya. Hanya konteks yang dibuat yang memiliki file yang disimpan di disk. default
konteks mewarisi pengaturan dari konfigurasi daemon Docker Anda.
Jika Anda ingin menyinkronkan konfigurasi konteks, Anda dapat mencadangkan contexts
folder untuk memindahkannya ke komputer lain. Anda dapat menggunakan transfer Rsync atau repositori Git untuk menyederhanakan pembaruan rutin. Menyelaraskan folder ke jaringan berbagi mungkin juga menjadi opsi tergantung pada kebutuhan Anda.
Docker juga memungkinkan Anda mengekspor dan mengimpor konteks melalui CLI:
docker context export my-context
Ini akan membuat my-context.dockercontext
file di direktori kerja Anda. File menyertakan meta.json
konten serta beberapa informasi tambahan, seperti nama konteks. Transfer file ini ke komputer lain dan jalankan docker context import my-context.dockercontext
untuk memuat konfigurasi konteks.
Atau, Anda dapat mengekspor file konfigurasi Kubernetes mandiri untuk konteks Kubernetes:
docker context export kubernetes-context --kubeconfig
Ini akan menghasilkan file “kubeconfig” biasa yang kompatibel dengan alat ekosistem Kubernetes seperti kubectl
. Kemampuan untuk memperoleh file kubeconfig dari konteks Docker meningkatkan interoperabilitas toolchain. Tidak ada dalam file yang spesifik untuk CLI Docker.
Jika Anda perlu mengedit konteks, gunakan docker context update
memerintah. Ini menerima flag yang sama dengan docker context create
. Jika Anda membuat pembaruan massal, Anda dapat mengedit meta.json
file untuk langsung memanipulasi konteks Anda. Anda dapat memeriksa meta.json
konteks file dari CLI dengan docker context inspect my-context
.
Kesimpulan
Konteks Docker berguna saat Anda perlu men-deploy container di beberapa lingkungan independen. Anda dapat menyiapkan konteks untuk soket Docker lokal, server staging tim bersama, dan server Kubernetes produksi Anda.
Docker memiliki dukungan bawaan untuk cloud container Microsoft Azure dan Amazon ECS, yang juga dapat ditambahkan sebagai konteks. Tidak ada batasan jumlah konteks yang dapat Anda buat, sehingga Anda memiliki keserbagunaan yang baik saat berpindah antar host.
Bisa dibilang masalah fungsional terbesar dengan konteks adalah kemungkinan menjalankan perintah secara tidak sengaja terhadap konteks yang salah. Jika Anda lupa bahwa Anda sedang dalam production
konteks, menjalankan docker rm database-container
dapat memiliki konsekuensi yang menghancurkan. Jika ragu, jalankan docker context ls
pertama untuk memeriksa apa yang telah Anda pilih.