Docker 內容
簡介
本指南說明如何使用 Context 從單一客戶端管理 Docker Daemon。
每個 Context 都包含在 Daemon 上管理資源所需的所有資訊。docker context
命令可以輕鬆地設定這些 Context 並在它們之間切換。
例如,單個 Docker 客戶端可以設定兩個 Context
- 在本機執行的預設 Context
- 遠端、共用的 Context
設定好這些 Context 後,您可以使用 docker context use <context-name>
命令在它們之間切換。
先決條件
要遵循本指南中的範例,您需要
- 支援頂層
context
命令的 Docker 客戶端
執行 docker context
以驗證您的 Docker 客戶端是否支援 Context。
Context 的剖析
Context 是多個屬性的組合。這些屬性包括
- 名稱和描述
- 端點設定
- TLS 資訊
要列出可用的 Context,請使用 docker context ls
命令。
$ docker context ls
NAME DESCRIPTION DOCKER ENDPOINT ERROR
default * unix:///var/run/docker.sock
這顯示了一個名為「default」的 Context。它被設定為透過本機 /var/run/docker.sock
Unix Socket 與 Daemon 通訊。
「名稱」欄位中的星號表示這是作用中的 Context。這表示所有 docker
命令都針對此 Context 執行,除非使用環境變數(例如 DOCKER_HOST
和 DOCKER_CONTEXT
)或在命令列上使用 --context
和 --host
旗標覆蓋。
使用 docker context inspect
深入瞭解。以下範例顯示如何檢查名為 default
的 Context。
$ 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"
}
}
]
建立新的 Context
您可以使用 docker context create
命令建立新的 Context。
以下範例建立一個名為 docker-test
的新 Context,並將 Context 的主機端點指定為 TCP Socket tcp://docker:2375
。
$ docker context create docker-test --docker host=tcp://docker:2375
docker-test
Successfully created context "docker-test"
新的 Context 儲存在 ~/.docker/contexts/
下的 meta.json
檔案中。您建立的每個新 Context 都會將其自己的 meta.json
儲存在 ~/.docker/contexts/
的專用子目錄中。
您可以使用 docker context ls
和 docker context inspect <context-name>
檢視新的 Context。
$ docker context ls
NAME DESCRIPTION DOCKER ENDPOINT ERROR
default * unix:///var/run/docker.sock
docker-test tcp://docker:2375
目前的 Context 以星號 ("*") 表示。
使用不同的 Context
您可以使用 docker context use
在 Context 之間切換。
以下命令會將 docker
CLI 切換為使用 docker-test
Context。
$ docker context use docker-test
docker-test
Current context is now "docker-test"
透過列出所有 Context 並確保星號 ("*") 位於 docker-test
Context 旁來驗證操作。
$ docker context ls
NAME DESCRIPTION DOCKER ENDPOINT ERROR
default unix:///var/run/docker.sock
docker-test * tcp://docker:2375
docker
命令現在將以 docker-test
Context 中定義的端點為目標。
您也可以使用 DOCKER_CONTEXT
環境變數設定目前的 Context。環境變數會覆蓋使用 docker context use
設定的 Context。
使用以下適當的命令,使用環境變數將 Context 設定為 docker-test
。
> $env:DOCKER_CONTEXT='docker-test'
$ export DOCKER_CONTEXT=docker-test
執行 docker context ls
以驗證 docker-test
Context 現在是否為作用中的 Context。
您也可以使用全域 --context
旗標來覆蓋 Context。以下命令使用名為 production
的 Context。
$ docker --context production container ls
匯出和匯入 Docker Context
您可以使用 docker context export
和 docker context import
命令在不同的主機上匯出和匯入 Context。
docker context export
命令將現有的 Context 匯出到檔案。該檔案可以在安裝了 docker
客戶端的任何主機上匯入。
匯出和匯入 Context
以下範例匯出名為 docker-test
的現有 Context。它將被寫入名為 docker-test.dockercontext
的檔案中。
$ docker context export docker-test
Written file "docker-test.dockercontext"
檢查匯出檔案的內容。
$ cat docker-test.dockercontext
使用 docker context import
在另一台主機上匯入此檔案,以建立具有相同設定的 Context。
$ docker context import docker-test docker-test.dockercontext
docker-test
Successfully imported context "docker-test"
您可以使用 docker context ls
驗證 Context 是否已匯入。
匯入命令的格式為 docker context import <context-name> <context-file>
。
更新 Context
您可以使用 docker context update
更新現有 Context 中的欄位。
以下範例更新現有 docker-test
Context 中的描述欄位。
$ docker context update docker-test --description "Test context"
docker-test
Successfully updated context "docker-test"