我使用命令
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 上下文?
如果您设置了
DOCKER_HOST
环境变量,它将始终优先于较新的 docker context use
工作流程。
在 shell 中输入
env | grep DOCKER
查看是否设置了任何特定于 docker 的变量。通过输入 unset DOCKER_HOST
取消设置。其他变量,例如 DOCKER_CONTEXT
也可能会产生妨碍。
一旦该变量消失,
docker context use
命令应该可以正常工作。
这在文档中注明了这里:
查看上下文的最简单方法是查看默认上下文。
$ docker context ls NAME DESCRIPTION DOCKER ENDPOINT KUBERNETES ENDPOINT ORCHESTRATOR default * Current... unix:///var/run/docker.sock swarm
这个 显示称为“默认”的单个上下文。它被配置为与 通过本地
Unix 套接字进行 Swarm 集群。它 没有配置 Kubernetes 端点。/var/run/docker.sock
列中的星号表示这是活动的 语境。这意味着所有NAME
命令都将针对 “默认”上下文 除非被环境变量覆盖,例如docker
和DOCKER_HOST
,或者在命令行上使用DOCKER_CONTEXT
和--context
标志。--host
(粗体是我加上的)
我也遇到了环境变量的问题:
DOCKER_CONTEXT
。 而不是:
pb@L1:~$ DOCKER_CONTEXT=example
pb@L1:~$ echo $DOCKER_CONTEXT
example
用途:
pb@L1:~$ export DOCKER_CONTEXT=example
pb@L1:~$ echo $DOCKER_CONTEXT
example
或者(如果您在 VSCode 中使用 docker 扩展,请修改 settings.json)
ctrl+shift+p -> 打开工作区设置(JSON)
{
"docker.context":"remote_workstation"
}
将 docker 上下文设置为
default
对我有用。
docker context use default