如何使用 docker context show 命令显示当前上下文

DockerDockerBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,你将学习如何使用 docker context show 命令来显示当前活跃的 Docker 上下文(context)。首先,你将查看默认上下文,该上下文连接至本地 Docker 守护进程(daemon)。

随后,你将创建一个新的 Docker 上下文,切换至该新上下文,并使用 docker context show 验证变更。最后,你将切换回默认上下文,并探索如何将 docker context show 命令集成至 shell 提示符中,以便轻松查看当前的 Docker 连接状态。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/create("Create Container") docker/SystemManagementGroup -.-> docker/info("Display System-Wide Information") docker/SystemManagementGroup -.-> docker/system("Manage Docker") subgraph Lab Skills docker/ls -.-> lab-555135{{"如何使用 docker context show 命令显示当前上下文"}} docker/create -.-> lab-555135{{"如何使用 docker context show 命令显示当前上下文"}} docker/info -.-> lab-555135{{"如何使用 docker context show 命令显示当前上下文"}} docker/system -.-> lab-555135{{"如何使用 docker context show 命令显示当前上下文"}} end

显示默认 Docker 上下文

在这一步骤中,我们将学习如何显示默认的 Docker 上下文(context)。Docker 上下文是一种连接不同 Docker 守护进程(daemon)的方式。默认情况下,Docker 使用 default 上下文,该上下文会连接到本地机器上运行的 Docker 守护进程。

要显示当前的 Docker 上下文,我们可以使用 docker context show 命令。

docker context show

你应该会看到输出结果为 default,这表示你当前正在使用默认的 Docker 上下文。

创建新的 Docker 上下文

在这一步骤中,我们将创建一个新的 Docker 上下文(context)。创建新上下文可以让你为不同的 Docker 守护进程(daemon)定义连接参数,这些守护进程可能位于远程机器或不同的本地配置中。

我们将创建一个名为 my-context 的上下文,该上下文连接到本地 Docker 守护进程。虽然对于本地连接来说这看起来有些多余,但它演示了创建上下文的过程。

要创建新上下文,我们使用 docker context create 命令后跟上下文名称。我们还需要使用 --docker 标志指定 Docker 守护进程的端点(endpoint)。对于本地守护进程,端点通常是 unix:///var/run/docker.sock

docker context create my-context --docker "unix:///var/run/docker.sock"

运行该命令后,你应该会看到输出显示 my-context 上下文已创建成功。

要验证上下文是否创建成功,你可以使用 docker context ls 命令列出所有可用上下文。

docker context ls

你应该会在输出结果中看到 my-context 与默认的 default 上下文一起列出。

切换并显示新的 Docker 上下文

在这一步骤中,我们将切换到上一步创建的新 Docker 上下文(context),然后显示当前激活的上下文以确认切换成功。

要切换到不同的 Docker 上下文,我们使用 docker context use 命令后跟目标上下文的名称。在本例中,上下文名称为 my-context

docker context use my-context

你应该会看到输出确认已成功切换到 my-context 上下文。

现在,让我们再次使用 docker context show 命令显示当前 Docker 上下文,以确认我们确实正在使用 my-context

docker context show

该命令的输出现在应该是 my-context,表明上下文切换已成功完成。

切换回默认上下文并显示

在这一步骤中,我们将切换回默认的 Docker 上下文(context)。当你使用其他上下文工作后想要返回标准的本地 Docker 守护进程时,这个操作非常有用。

要切换回默认上下文,我们使用 docker context use 命令后跟默认上下文的名称 default

docker context use default

你应该会看到输出确认已成功切换回 default 上下文。

现在,让我们再次使用 docker context show 命令显示当前 Docker 上下文,以确认我们已恢复使用 default 上下文。

docker context show

该命令的输出现在应该是 default,表明上下文切换已成功完成。

将 docker context show 集成到 shell 提示符中

在这一步骤中,我们将把 docker context show 命令集成到你的 shell 提示符中。这样你就能直接在终端提示符中看到当前的 Docker 上下文(context),更方便地了解当前正在交互的是哪个 Docker 守护进程。

我们将修改你主目录中的 .zshrc 文件(Zsh shell 的配置文件),添加一个获取当前 Docker 上下文的函数,并将该函数的输出包含在提示字符串中。

首先,使用 nano 编辑器打开 .zshrc 文件:

nano ~/.zshrc

滚动到文件末尾,添加以下内容:

## Function to get current Docker context
get_docker_context() {
  docker context show 2> /dev/null
}

## Add Docker context to prompt
PROMPT='$(get_docker_context) %~ %## '

让我们解析这些代码:

  • get_docker_context():定义了一个名为 get_docker_context 的新 shell 函数
  • docker context show 2>/dev/null:在函数内部执行该命令获取当前 Docker 上下文。2>/dev/null 将错误输出重定向到 /dev/null,避免当 Docker 未运行或出现问题时污染提示符
  • PROMPT='$(get_docker_context) %~ %## ':设置 PROMPT 环境变量来定义 shell 提示符的显示格式
    • $(get_docker_context):执行 get_docker_context 函数并将输出包含在提示符中
    • %~:显示当前工作目录(主目录会缩写为 ~
    • %#:如果是 root 用户显示 #,普通用户则显示 %

Ctrl + X,然后按 Y,最后按 Enter 保存文件。

要使更改在当前终端会话中生效,需要重新加载 .zshrc 文件:

source ~/.zshrc

重新加载后,你的 shell 提示符现在应该会在当前目录前显示当前 Docker 上下文(默认应该是 default)。

你可以通过再次切换到 my-context 来测试这个功能:

docker context use my-context

你的提示符应该会更新显示 my-context 后跟当前目录。

然后再切换回默认上下文:

docker context use default

你的提示符应该会变回显示 default

总结

在本实验中,我们学习了如何使用 docker context show 命令管理 Docker 上下文(context)。我们首先展示了默认的 Docker 上下文(连接本地守护进程),然后创建了一个名为 my-context 的新上下文,演示了为不同守护进程(在本例中仍是同一个本地守护进程)定义连接参数的过程。

创建完成后,我们练习了使用 docker context use 切换到新创建的上下文,并通过 docker context show 验证了当前活跃的上下文。这些实践操作巩固了我们对如何在不同 Docker 环境间切换以及确认当前连接点的理解。