Hsüan's Blog

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

參考資料

© 2019 ~ 2024 Hsüan, Powered by Gatsby, Theme Material UI