情况:
我在使用 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
现实:
除非在活动 shell 的会话中设置,否则 Docker 无法识别此变量/此变量的值。我实际上必须将变量分配给它自己,以便 docker 识别它(例如export DOCKER_HOST=$DOCKER_HOST
),然后 docker 命令才会针对远程守护进程运行。
我的问题:
为什么我必须重置DOCKER_HOST
变量才能让 docker 能够识别它?
如果我做错了,正确的方法是什么?
我很乐意听到我的问题在错误的地方。我可以看到这是一个 Linux/WSL 问题,或者是 docker 本身的问题。
我在发布后不久就找到了解决方案,我觉得有点傻。
问题是我只是在其中设置了一个 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>