Docker 上下文
介绍
本指南介绍如何使用上下文从单个客户端管理 Docker 守护程序。
每个上下文都包含管理守护程序上的资源所需的所有信息。
该命令使配置这些上下文并在它们之间切换变得容易。docker context
例如,单个 Docker 客户端可能配置了两个上下文:
- 在本地运行的默认上下文
- 远程共享环境
配置这些上下文后,
您可以使用命令
在它们之间切换。docker context use <context-name>
先决条件
要遵循本指南中的示例,您需要:
- 支持 top level 命令的 Docker 客户端
context
运行 以验证您的 Docker 客户端是否支持上下文。docker context
环境剖析
上下文是多个属性的组合。这些包括:
- 名称和描述
- 端点配置
- TLS 信息
要列出可用的上下文,请使用命令。docker context ls
$ docker context ls
NAME DESCRIPTION DOCKER ENDPOINT ERROR
default * unix:///var/run/docker.sock
这显示了一个名为 “default” 的上下文。
它被配置为通过本地 Unix 套接字与守护进程通信。/var/run/docker.sock
列中的星号表示这是活动上下文。
这意味着所有命令都针对此上下文运行,
除非被环境变量(如 和 ,
或在命令行上使用 和 标志。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
以下示例创建一个名为 并指定
上下文的主机端点到 TCP 套接字。docker-test
tcp://docker:2375
$ docker context create docker-test --docker host=tcp://docker:2375
docker-test
Successfully created context "docker-test"
新上下文存储在下面的文件中。
您创建的每个新上下文都会将其自己的上下文存储在 的专用子目录中。meta.json
~/.docker/contexts/
meta.json
~/.docker/contexts/
您可以使用 和 查看新上下文。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
以下命令将切换 CLI 以使用上下文。docker
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
您还可以使用 global 标志覆盖上下文。
以下命令使用名为 .--context
production
$ docker --context production container ls
导出和导入 Docker 上下文
您可以使用 and 命令
以导出和导入不同主机上的上下文。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
以下示例更新现有上下文中的 description 字段。docker-test
$ docker context update docker-test --description "Test context"
docker-test
Successfully updated context "docker-test"