在本地机器上将 Docker 机器重置为 运行 Docker 命令
Reset Docker Machine to run Docker commands on my local machine
我现在正在学习 docker,但我 运行 遇到了一些令人困惑的事情。我开始使用 docker-machine
,这非常适合创建本地 VM 并在 Digital Ocean 上启动服务器。但是,我现在想要 return 进入 docker 命令在我的本地计算机上执行的状态,以便我可以添加功能、构建和推送我的 docker 存储库。
我知道如何使用 docker-machine env
切换到其他机器,但我如何返回到没有活动机器的状态?如果我重新启动 docker 会发生这种情况,但我不想一直重新启动 docker。好像应该有这个命令?
澄清一下,我并没有尝试连接到我的 default
机器。我希望 docker 命令在我的机器上执行,就像它们在我设置 Docker 机器之前所做的那样。
做eval $(docker-machine env DOCKER_MACHINE_NAME)
只会设置一堆环境变量,即:
- DOCKER_TLS_VERIFY="1"
- DOCKER_HOST="tcp://X.Y.Z.W:2376"
- DOCKER_CERT_PATH="/machine/machines/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 中)
或者,您可以重置它们,w/o 退出当前 shell,像这样:
unset `env|grep DOCKER|cut -d\= -f1`
或对 "env" 使用“--unset”选项(因为@thaJeztah 已经 )
eval "$(docker-machine env -u)"
docker-machinemanual.
中也有记载
使用包装脚本
如果你只是偶尔需要对远程机器执行 运行 docker 命令,你可以使用像这样的简单包装脚本:
#!/bin/bash
DOCKER_MACHINE=
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 上获取容器列表 运行ning(或执行任何其他 Docker 命令),w/o 打扰您当前的 shell 会话。
旁注
要检查当前活动的 DOCKER_ 变量集,只需执行:
env|grep DOCKER
要取消由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 设置的所有 environment-variables。
我现在正在学习 docker,但我 运行 遇到了一些令人困惑的事情。我开始使用 docker-machine
,这非常适合创建本地 VM 并在 Digital Ocean 上启动服务器。但是,我现在想要 return 进入 docker 命令在我的本地计算机上执行的状态,以便我可以添加功能、构建和推送我的 docker 存储库。
我知道如何使用 docker-machine env
切换到其他机器,但我如何返回到没有活动机器的状态?如果我重新启动 docker 会发生这种情况,但我不想一直重新启动 docker。好像应该有这个命令?
澄清一下,我并没有尝试连接到我的 default
机器。我希望 docker 命令在我的机器上执行,就像它们在我设置 Docker 机器之前所做的那样。
做eval $(docker-machine env DOCKER_MACHINE_NAME)
只会设置一堆环境变量,即:
- DOCKER_TLS_VERIFY="1"
- DOCKER_HOST="tcp://X.Y.Z.W:2376"
- DOCKER_CERT_PATH="/machine/machines/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 中)
或者,您可以重置它们,w/o 退出当前 shell,像这样:
unset `env|grep DOCKER|cut -d\= -f1`
或对 "env" 使用“--unset”选项(因为@thaJeztah 已经
eval "$(docker-machine env -u)"
docker-machinemanual.
中也有记载使用包装脚本
如果你只是偶尔需要对远程机器执行 运行 docker 命令,你可以使用像这样的简单包装脚本:
#!/bin/bash
DOCKER_MACHINE=
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 上获取容器列表 运行ning(或执行任何其他 Docker 命令),w/o 打扰您当前的 shell 会话。
旁注
要检查当前活动的 DOCKER_ 变量集,只需执行:
env|grep DOCKER
要取消由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 设置的所有 environment-variables。