Docker 上下文
介紹
本指南介紹瞭如何使用上下文從單個客戶端管理 Docker 守護程式。
每個上下文都包含管理守護程式上資源所需的所有資訊。docker context 命令可以輕鬆配置這些上下文並在它們之間切換。
例如,單個 Docker 客戶端可以配置兩個上下文
- 在本地執行的預設上下文
- 遠端共享上下文
配置好這些上下文後,可以使用 docker context use <context-name> 命令在它們之間切換。
先決條件
要遵循本指南中的示例,您需要
- 支援頂級
context命令的 Docker 客戶端
執行 docker context 以驗證您的 Docker 客戶端是否支援上下文。
上下文的構成
上下文是幾個屬性的組合。其中包括
- 名稱和描述
- 端點配置
- TLS 資訊
要列出可用的上下文,請使用 docker context ls 命令。
$ docker context ls
NAME DESCRIPTION DOCKER ENDPOINT ERROR
default * unix:///var/run/docker.sock
這將顯示名為“default”的單個上下文。它配置為透過本地 /var/run/docker.sock Unix 套接字與守護程式通訊。
NAME 列中的星號表示這是活動上下文。這意味著所有 docker 命令都將針對此上下文執行,除非使用環境變數(如 DOCKER_HOST 和 DOCKER_CONTEXT)或在命令列中使用 --context 和 --host 標誌進行覆蓋。
使用 docker context inspect 進行更深入的瞭解。以下示例顯示瞭如何檢查名為 default 的上下文。
$ docker context inspect default
[
{
"Name": "default",
"Metadata": {},
"Endpoints": {
"docker": {
"Host": "unix:///var/run/docker.sock",
"SkipTLSVerify": false
}
},
"TLSMaterial": {},
"Storage": {
"MetadataPath": "\u003cIN MEMORY\u003e",
"TLSPath": "\u003cIN MEMORY\u003e"
}
}
]
建立新的上下文
可以使用 docker context create 命令建立新的上下文。
以下示例建立一個名為 docker-test 的新上下文,並將該上下文的宿主端點指定為 TCP 套接字 tcp://docker:2375。
$ docker context create docker-test --docker host=tcp://docker:2375
docker-test
Successfully created context "docker-test"
新上下文儲存在 ~/.docker/contexts/ 下的 meta.json 檔案中。您建立的每個新上下文都會在 ~/.docker/contexts/ 的專用子目錄中儲存其自己的 meta.json。
可以使用 docker context ls 和 docker context inspect <context-name> 檢視新上下文。
$ docker context ls
NAME DESCRIPTION DOCKER ENDPOINT ERROR
default * unix:///var/run/docker.sock
docker-test tcp://docker:2375
當前上下文用星號 (“*”) 表示。
使用不同的上下文
可以使用 docker context use 在上下文之間切換。
以下命令將使 docker CLI 使用 docker-test 上下文。
$ docker context use docker-test
docker-test
Current context is now "docker-test"
透過列出所有上下文並確保星號 (“*”) 位於 docker-test 上下文旁來驗證操作。
$ docker context ls
NAME DESCRIPTION DOCKER ENDPOINT ERROR
default unix:///var/run/docker.sock
docker-test * tcp://docker:2375
docker 命令現在將針對 docker-test 上下文中定義的端點。
您還可以使用全域性 DOCKER_CONTEXT 環境變數設定當前上下文。環境變數將覆蓋使用 docker context use 設定的上下文。
使用以下適當的命令使用環境變數將上下文設定為 docker-test。
> $env:DOCKER_CONTEXT='docker-test'$ export DOCKER_CONTEXT=docker-test
執行 docker context ls 以驗證 docker-test 上下文現在是否為活動上下文。
您還可以使用全域性 --context 標誌來覆蓋上下文。以下命令使用名為 production 的上下文。
$ docker --context production container ls
匯出和匯入 Docker 上下文
可以使用 docker context export 和 docker context import 命令在不同的主機上匯出和匯入上下文。
docker context export 命令將現有上下文匯出到檔案。該檔案可以在安裝了 docker 客戶端的任何主機上匯入。
匯出和匯入上下文
以下示例匯出名為 docker-test 的現有上下文。它將被寫入名為 docker-test.dockercontext 的檔案。
$ docker context export docker-test
Written file "docker-test.dockercontext"
檢查匯出檔案的內容。
$ cat docker-test.dockercontext
在另一臺主機上使用 docker context import 匯入此檔案以建立具有相同配置的上下文。
$ docker context import docker-test docker-test.dockercontext
docker-test
Successfully imported context "docker-test"
可以使用 docker context ls 驗證上下文是否已匯入。
匯入命令的格式為 docker context import <context-name> <context-file>。
更新上下文
可以使用 docker context update 更新現有上下文中的欄位。
以下示例更新現有 docker-test 上下文中的描述欄位。
$ docker context update docker-test --description "Test context"
docker-test
Successfully updated context "docker-test"