重置Docker机器在本地机器上运行Docker命令
我现在正在学Docker,而且遇到了令人困惑的事情。 我开始使用docker-machine
,这对于创build一个本地VM并在Digital Ocean上启动服务器非常有用。 但是,我现在想要返回一个状态,在我的本地机器上执行docker命令execue,以便我可以添加function,构build和推送我的Docker回购。
我知道如何改变使用docker-machine env
其他机器,但我怎么回到没有活动的机器? 如果我重新启动docker发生这种情况,但我不想一直重新启动docker。 似乎应该有一个这样的命令?
只是为了澄清,我不想连接到我的default
机器。 我想在我的机器上执行docker命令,就像在我设置Docker Machine之前一样。
执行eval $(docker-machine env DOCKER_MACHINE_NAME)
将只设置一堆环境variables,即:
- DOCKER_TLS_VERIFY = “1”
- DOCKER_HOST = “TCP:// XYZW:2376”
- DOCKER_CERT_PATH = “/机器/设备/ DOCKER_MACHINE_NAME”
- DOCKER_MACHINE_NAME = “DOCKER_MACHINE_NAME”
当你使用这些设置运行“docker”时,它会识别它们并连接到远程机器。
所以你需要做的是取消它们,或者退出当前的shell会话。
使用新的shell会话
可能最简单的方法是在调用docker-machine env
之前启动一个新的shell,以便这些variables只能在其中设置。
#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 ...
重置DOCKERvariables(在你当前的shell中)
或者,您可以重置它们,而不用退出当前的shell,如下所示:
unset `env|grep DOCKER|cut -d\= -f1`
或者使用“–unset”选项来“env”(就像@thaJeztah已经指出的那样 )
eval "$(docker-machine env -u)"
这也在docker机手册中有logging 。
使用包装脚本
如果您只需要偶尔对远程计算机运行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_variables集,只需执行:
env|grep DOCKER
要取消设置由docker-machine
设置的环境variables,请按照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)
应该取消设置eval $(docker-machine env --unset)
设置的所有环境variables。