重置Docker Machine以在我的本地计算机上运行Docker命令

时间:2017-01-16 21:53:14

标签: docker docker-machine

我现在正在学习码头工具,我遇到了令人困惑的事情。我开始使用docker-machine,这非常适合创建本地VM并在Digital Ocean上启动服务器。但是,我现在想要返回到docker命令在我的本地机器上执行的状态,以便我可以添加功能,构建和推送我的docker repo。

我知道如何使用docker-machine env更改为其他计算机,但如何更换为没有活动计算机?如果我重启docker会发生这种情况,但我不想一直重启docker。似乎应该有一个命令吗?

只是为了澄清,我不是想连接到我的default机器。我希望docker命令在我的机器上执行,就像我在设置Docker Machine之前一样。

2 个答案:

答案 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_TLS_VERIFY = “1”
  • DOCKER_HOST = “TCP://X.Y.Z.W:2376”
  • DOCKER_CERT_PATH = “/机器/设备/ DOCKER_MACHINE_NAME”
  • DOCKER_MACHINE_NAME = “DOCKER_MACHINE_NAME”

然后当你使用这些设置运行“docker”时,它将识别它们并连接到远程机器。

所以您需要做的是取消设置,或者只退出当前的shell会话。

使用新的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
...

重置 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会话。

<强>旁注

要检查当前有效的 DOCKER _ 变量集,请执行以下操作:

env|grep DOCKER