Remote Host Docker menggunakan Docker Context

Docker Context merupakan fitur dari Docker CLI yang memungkinkan Anda terhubung ke instance docker jarak jauh atau instance docker lainnya.

Selain untuk mengelola beberapa instance docker individual, Docker Context juga dapat digunakan untuk mengelola beberapa cluster Swarm dan cluster Kubernetes.

Generate SSH-key

Generate SSH key menggunakan ssh-keygen pada node yang akan dijadikan Leader.

ssh-keygen

Lalu tambahkan public key .ssh/id_rsa.pub pada setiap node yang dijadikan sebagai worker

ssh-copy-id user@IP_WORKER

Pastikan node Leader dapat melakukan ssh tanpa memasukan password (passwordless)

Test DOCKER_HOST

Sebelum menambahkan Docker Context, Anda dapat melakukan test terlebih dahulu dengan perintah berikut.

DOCKER_HOST=ssh://$IP_WORKER docker container ls
Untuk menggunakan ssh:// pastikan versi docker 19.03 atau lebih baru. Jika Anda memakai versi dibawahnya dapat dicoba dengan tcp://

Using Docker Context

Untuk menambahkan instance docker gunakan perintah.

docker context create worker1 --description "Worker 1" --docker "host=ssh://$IP_WORKER"

Lalu cek dengan perintah

docker context ls

Output

NAME        DESCRIPTION                               DOCKER ENDPOINT               ERROR
default *   Current DOCKER_HOST based configuration   unix:///var/run/docker.sock
worker1     Worker 1                                  ssh://10.7.7.10

Untuk memakai context worker1

docker context use worker1

Cek dengan docker info

$ docker info
Client:
 Context:    worker1
 Debug Mode: false

Atau bisa juga menggunakan option --context

$ docker --context worker1 info
Client:
 Context:    worker1
 Debug Mode: false

Show current context

docker context show

Update context

docker context update worker1 --description "some description" --docker "host=tcp://myserver:2376,ca=~/ca-file,cert=~/cert-file,key=~/key-file"

Remove context

docker context rm worker1