2020-08-29
使用 docker context 操作遠端的 docker 機器
目的
以往每次要操作遠端機器,都要先 ssh 連入,再在該台機器上執行 docker 相關指令。
現在可以使用 docker context 省掉 ssh 連入這步驟。
設定 ssh config
先設定好遠端 ssh 連入設定,避免創建 docker context 時還要輸入一堆有的沒的
$ cat ~/.ssh/config
Host dev
User root
Hostname remote.host.ip.or.domain
IdentityFile ~/.ssh/my.id_rsa.private.file
創建 docker context
這邊創建了一個 dev
名稱的 context,並使用 ssh 連入 dev (.ssh/config 的 Host dev 設定)
$ docker context create dev --docker "host=ssh://dev"
dev
Successfully created context "dev"
檢查一下現有的 context
$ docker context ls
NAME DESCRIPTION DOCKER ENDPOINT KUBERNETES ENDPOINT ORCHESTRATOR
default * Current DOCKER_HOST based configuration unix:///var/run/docker.sock swarm
dev ssh://dev
使用
使用前可先確認預設值狀態
$ docker system info -f "{{.OperatingSystem}}"
Docker Desktop
$ uname
Darwin
切換至 dev 的 context
$ docker context use dev
dev
Current context is now "dev"
此時若是
docker context ls
確認,會看到 * 被上到 dev 上面。代表現在使用的設定為 dev。
接下來用 docker
相關指令,就如同已經 ssh 連入 dev 機器,在遠端執行的結果
$ docker system info -f "{{.OperatingSystem}}"
CentOS Linux 8 (Core)
$ ssh dev uname
Linux
若擔心切來切去容易忘記,也可以選擇不切換,使用
-c
指定哪個 context
# 切回預設
docker context use default
# 指定 dev
docker -c dev ps