docker context 通过抽象远程主机连接配置为可切换上下文,避免反复修改环境变量或参数;支持 ssh/tcp+tls/普通 tcp 方式创建,配合 use/export/import 实现多环境快速切换与团队协作。

用 Docker Context 管理多个远程 Docker 主机,核心是把每个主机的连接配置抽象成独立、可切换的“上下文”,而不是反复改环境变量或加 --host 参数。操作轻量、安全、可复用,适合开发、测试、CI/CD 多环境协作。
确认客户端支持并查看当前状态
Docker 19.03+ 原生支持 context。运行以下命令验证:
-
docker context ls:列出所有 context,带 * 的是当前激活项 -
docker context inspect default:查看默认 context 的详细配置(通常是本地 Unix socket) - 如果提示
unknown command "context",说明版本过低,需升级 Docker CLI
为远程主机创建 context
根据远程 Docker daemon 的访问方式选择创建方式,无需修改远程配置(前提是它已开启对应协议监听):
-
SSH 连接(推荐,免证书、自动鉴权):
docker context create my-server --docker "host=ssh://user@192.168.1.100" -
TCP + TLS(生产常用):
docker context create prod --docker "host=tcp://prod.example.com:2376,ca=/path/ca.pem,cert=/path/cert.pem,key=/path/key.pem" -
普通 TCP(仅限可信内网,不加密):
docker context create dev-box --docker "host=tcp://192.168.1.200:2375"
注意:远程 daemon 必须已配置为监听对应协议和端口(如 systemctl edit docker 中添加 ExecStart=... -H tcp://0.0.0.0:2375 并重启服务)。
使用 Python 脚本下载 Docker 镜像并打包为 tar 文件。用户说“下载镜像”“拉取镜像”“pull xxx”“帮我下载 nginx 镜像”等时触发。支持 SOCKS5 代理直连(推荐)和国内镜像站加速两种模式。
快速切换与日常使用
切换后,所有 docker 和 docker compose 命令自动作用于目标主机:
-
docker context use my-server:立即切换到该远程主机 -
docker ps、docker images、docker compose up等命令无需额外参数,直接执行 - 临时指定 context(不改变当前激活项):
DOCKER_CONTEXT=my-server docker compose ls
Compose v2.20+ 会自动继承当前 context,无需在 docker-compose.yml 中写死 host 或 tls 设置。
团队协作与环境迁移
Context 可导出为 tar 包分发,便于新成员快速接入:
-
docker context export my-server > server-context.tar(不含敏感密钥文件本身,只存路径引用) - 接收方需提前将 SSH key 或 TLS 证书放到相同路径,再运行:
docker context import my-server-new server-context.tar - 建议配合脚本统一初始化证书路径,例如用
ansible部署时同步证书并创建 context
多个 context 共享本地镜像缓存——构建仍发生在本地,推送或运行才走远端 daemon,兼顾效率与隔离。










