Windows Subsystem for Linux (WSL) 实际上并未保存 $DOCKER_HOST

Windows Subsystem for Linux (WSL) 实际上并未保存 $DOCKER_HOST

情况:

我在使用 WSL 运行 docker 的 Windows VDI 上进行开发,实际上我使用的是在 Red Hat 服务器上运行的远程 docker 守护进程。在本地,我将DOCKER_HOST变量设置为我的 docker 守护进程 ( tcp://<userid>@<my server running the remote docker daemon>) 的正确路径,但此环境变量仅在设置后立即被识别。

我的意思是,现在,如果我运行 docker 命令,我会收到错误Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?,但如果我用 分配DOCKER_HOST给自己$ export DOCKER_HOST=$DOCKER_HOST,未来的 docker 命令现在将识别我使用该变量将其定向到的远程守护程序。

我已将此分配添加到DOCKER_HOST我的 中~/.bashrc,当我重新启动 shell 并运行 时,我可以看到它已正确设置$ echo $DOCKER_HOST

预期行为:

我希望 docker 命令引用DOCKER_HOST中设置的变量~/.bashrc,确认其存在$ echo $DOCKER_HOST

现实:

Docker 无法识别此变量/此变量的值,除非它是在活动 shell 会话中设置的。我实际上必须将变量分配给自身,以便 docker 识别它(例如export DOCKER_HOST=$DOCKER_HOST),只有这样 docker 命令才会针对远程守护进程运行。

我的问题:

为什么我必须重置DOCKER_HOST变量才能让 docker 识别它?

如果我这样做不正确,正确的方法是什么?

我愿意听到我的问题问错了地方。我可以认为这是一个 Linux/WSL 问题,或者是 docker 本身的问题。

答案1

我在发布这篇文章后不久就找到了解决方案,我觉得有点傻。

问题是我只是在其中设置了一个 shell 变量~/.bashrc,而不是导出环境变量。

解决方案:

修改~/.bashrc为使用export

export DOCKER_HOST=tcp://<userid>@<my server running the remote docker daemon>

而不仅仅是:

DOCKER_HOST=tcp://<userid>@<my server running the remote docker daemon>

相关内容