我现在正在学习docker,遇到了令人困惑的事情。我开始使用docker-machine
,它非常适合创建本地VM并在Digital Ocean上旋转服务器。但是,我现在想返回一种状态,在该状态下,docker命令会在本地计算机上执行,以便我可以添加功能,构建并推送docker存储库。
我知道如何使用docker-machine env
更改为其他计算机,但是如何回到没有 Activity 计算机的状态?如果我重新启动Docker,则会发生这种情况,但我不想一直都在重新启动docker。似乎应该为此命令?
只是为了澄清,我没有尝试连接到default
机器。我希望Docker命令像在我设置Docker Machine之前一样在我的计算机上执行。
最佳答案
进行eval $(docker-machine env DOCKER_MACHINE_NAME)
只会设置一堆环境变量,即:
然后使用这些设置运行“docker”时,它将识别它们并连接到远程计算机。
因此,您需要做的是,取消设置它们,或者仅退出当前的Shell session 。
使用一个新的shell session
您可能采取的最简单的方法是在调用
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
...
重置DOCKER变量(在您当前的shell中)
另外,您可以重置它们,而无需退出当前的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 session 。
旁注
要检查当前 Activity 的DOCKER_变量集,只需执行以下操作:
env|grep DOCKER
关于docker - 重置Docker Machine以在我的本地计算机上运行Docker命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41685603/