我现在正在学习码头工具,我遇到了令人困惑的事情。我开始使用docker-machine
,这非常适合创建本地VM并在Digital Ocean上启动服务器。但是,我现在想要返回到docker命令在我的本地机器上执行的状态,以便我可以添加功能,构建和推送我的docker repo。
我知道如何使用docker-machine env
更改为其他计算机,但如何更换为没有活动计算机?如果我重启docker会发生这种情况,但我不想一直重启docker。似乎应该有一个命令吗?
只是为了澄清,我不是想连接到我的default
机器。我希望docker命令在我的机器上执行,就像我在设置Docker Machine之前一样。
答案 0 :(得分:5)
要取消设置由docker-machine
设置的环境变量,请按照docker-machine env --unset
选项打印的说明进行操作;
unset DOCKER_TLS_VERIFY
unset DOCKER_HOST
unset DOCKER_CERT_PATH
unset DOCKER_MACHINE_NAME
unset DOCKER_API_VERSION
# Run this command to configure your shell:
# eval $(docker-machine env --unset)
因此,运行eval $(docker-machine env --unset)
应取消设置docker-machine设置的所有环境变量。
答案 1 :(得分:3)
执行eval $(docker-machine env DOCKER_MACHINE_NAME)
只会设置一堆环境变量,即:
然后当你使用这些设置运行“docker”时,它将识别它们并连接到远程机器。
所以您需要做的是取消设置,或者只退出当前的shell会话。
您可以采用的最简单方法是在调用docker-machine env
之前启动一个新shell,以便只在其中设置这些变量。
#start a new shell
bash
#configure docker to connect to the remote machine
eval $(docker-machine env DOCKER_MACHINE_NAME)
#run some commands against the remote docker machine
docker ps
...
#once, done, return to the parent shell
exit
#run some commands against your local docker daemon
docker ps
...
或者,您可以重置它们,不用退出当前的shell,如下所示:
unset `env|grep DOCKER|cut -d\= -f1`
或使用“--unset”选项“env”(因为@thaJeztah已经有pointed out)
eval "$(docker-machine env -u)"
这也在docker-machine manual中有记录。
如果您只需要偶尔对远程计算机运行 docker 命令,您可以使用这样的简单包装脚本:
#!/bin/bash
DOCKER_MACHINE=$1
shift
if [ -z "$DOCKER_MACHINE" ]
then
echo "Usage: rdocker DOCKER_MACHINE COMMAND"
exit 1
fi
eval $(docker-machine env "$DOCKER_MACHINE")
docker "${@}"
然后可以这样调用:
./rdocker my_machine ps
获取在 my_machine 上运行的容器列表(或执行任何其他 Docker 命令),不会干扰您当前的shell会话。
<强>旁注强>
要检查当前有效的 DOCKER _ 变量集,请执行以下操作:
env|grep DOCKER