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"