docker context 可以用于隔离不同的 Docker 环境(如不同项目、不同服务器、不同容器引擎等),通过切换 context 可以快速切换 Docker 客户端的连接目标(例如本地 Docker 引擎、远程服务器上的 Docker 引擎、Docker Swarm 集群、Kubernetes 等),从而实现项目或环境的隔离。
关于 docker context 的增删改查命令:
1. 查看所有 context(查)
docker context ls
该命令会列出当前所有可用的 context,包括默认的 default(本地 Docker 引擎),并显示每个 context 的连接信息(如 Docker 主机地址、是否为当前活跃 context 等)。
2. 创建新 context(增)
创建 context 的核心是指定其连接的 Docker 环境,常见场景包括:
-
连接本地 Docker 引擎(默认已存在
default,一般无需手动创建):docker context create <context-name> -
连接远程 Docker 引擎(通过 SSH 或 TCP):
# 通过 SSH 连接远程服务器的 Docker 引擎(推荐,更安全) docker context create <context-name> --docker "host=ssh://user@remote-host"# 通过 TCP 连接(需远程 Docker 开启 TCP 端口,注意安全风险) docker context create <context-name> --docker "host=tcp://remote-host:2375" -
连接 Docker Swarm 集群:
docker context create <context-name> --swarm --docker "host=ssh://user@swarm-manager" -
连接 Kubernetes 集群(需提前配置 kubectl 上下文):
docker context create kubernetes <context-name> --kubernetes
3. 切换当前活跃 context(改 - 切换)
切换到指定 context 后,所有 Docker 命令(如 docker run、docker ps 等)都会作用于该 context 对应的环境:
docker context use <context-name>
4. 修改现有 context 的配置(改 - 编辑)
可以通过 docker context update 修改 context 的连接信息(如远程主机地址、用户等):
# 修改远程主机地址(例如更换 SSH 连接的用户或主机)
docker context update <context-name> --docker "host=ssh://new-user@new-remote-host"
5. 删除 context(删)
删除不再需要的 context:
docker context rm <context-name>
如果删除的是当前活跃的 context,Docker 会自动切换回默认的 default context(若存在)。
通过合理使用 docker context,可以方便地在本地开发环境、测试服务器、生产集群等不同环境之间切换,避免操作混乱,实现项目或环境的隔离。