【问题标题】:Docker context not changing (docker context use)Docker 上下文不改变(docker 上下文使用)
【发布时间】:2021-06-25 02:50:43
【问题描述】:

我正在使用命令docker context use 来设置活动的 Docker 上下文:

> docker context use aws-context
aws-context

但是,由于某种原因,活动的 Docker 上下文不会改变。

当我随后键入docker context show 时,激活的上下文仍然是默认上下文:

> docker context show
default

当我列出现有上下文时,星号仍在默认上下文后面:

> docker context ls
NAME                TYPE                DESCRIPTION                              DOCKER ENDPOINT             
aws-context         ecs                 (eu-west-1)                                                                  
default *           moby                Current DOCKER_HOST based configuration  tcp://192.168.99.100:2376          

如何更改 Docker 上下文?

【问题讨论】:

  • 远程集群是否可以从您的机器访问?
  • 是的,它是一项 AWS 服务,我可以 ping AWS 容器注册表。
  • docker context 命令是否有任何 详细 选项?为了获得更多的输出?不幸的是,我没有找到任何东西。
  • 是的,我可以看到它是 ECS。我认为 ECR 在这里不起作用。在我看来,您的端点无法正常工作,这就是 docker 不允许您选择该上下文的原因,但我可能错了。

标签: amazon-web-services docker amazon-ecs


【解决方案1】:

如果您设置了 DOCKER_HOST 环境变量,它将始终优先于较新的 docker context use 工作流程。

在您的 shell 中键入 env | grep DOCKER 以查看您是否设置了任何特定于 docker 的变量。通过键入 unset DOCKER_HOST 取消设置它们。 DOCKER_CONTEXT 等其他变量也可能会妨碍您。

一旦该变量不碍事,docker context use 命令应该可以正常工作。

这在文档 https://docs.docker.com/engine/context/working-with-contexts/#the-anatomy-of-a-context 中有说明:

查看上下文的最简单方法是查看默认上下文。

$ docker context ls
NAME          DESCRIPTION     DOCKER ENDPOINT              KUBERNETES ENDPOINT      ORCHESTRATOR
default *     Current...      unix:///var/run/docker.sock                           swarm

这个 显示一个名为“default”的上下文。它被配置为与 通过本地 /var/run/docker.sock Unix 套接字进行 Swarm 集群。它 没有配置 Kubernetes 端点。

NAME 列中的星号表示这是活动的 语境。这意味着所有docker 命令都将针对 “默认”上下文除非被环境变量覆盖,例如 DOCKER_HOSTDOCKER_CONTEXT,或者在命令行中使用 --context--host 标志。

(我加的粗体)

【讨论】:

  • 好提示,非常感谢!我有一个环境变量 DOCKER_MACHINE_NAME 设置为 default
猜你喜欢
  • 1970-01-01
  • 2023-02-05
  • 2021-10-14
  • 1970-01-01
  • 1970-01-01
  • 2020-02-03
  • 1970-01-01
  • 1970-01-01
  • 2020-11-10
相关资源
最近更新 更多