eval $(docker-machine env myvm1)不会切换到shell以与myvm1进行通信
伙计们,
我在这里跟随Docker教程: https : //docs.docker.com/get-started/part4/#configure-a-docker-machine-shell-to-the-warm-manager,并在运行时抵抗阻力这个特别的命令:
eval $(docker-machine env myvm1)
我实际上正在运行(如上所述,但增加了sudo)。
eval $(sudo docker-machine env myvm1)
我没有从命令行输出告诉我什么已经完成,当我运行:
sudo docker-machine ls
我发现myvm1并没有像预期的那样处于活动状态。 我知道这一步是不必要的,但我想了解为什么命令不起作用,并试图解决它。
我正在运行docker17.09.0-ce
在Ubuntu 16.04 LTS上
zsh shell(已经尝试切换到bash)
顺便说一下,这只是我的本地机器,而不是服务器。
任何帮助将非常感激。
如果你在sudo
的远端运行eval
,那么sudo
:
sudo sh -c 'eval "$(docker-machine env myvm1)"; docker-machine ls'
否则,通过eval
docker-machine env
的输出设置的环境variables不一定会传播到未来的docker-machine
调用中(不包括一些非常特定的/etc/sudoers
configuration)。
如果你想用shell函数自动执行,可以这样做:
# docker-env sudo; usage: desudo vm-name command-to-run desudo() { local cmd1 cmd2 printf -v cmd1 'eval "$(docker-machine env %q)"' "$1"; shift printf -v cmd2 '%q ' "$@" sudo bash -c "${cmd1} && exec ${cmd2}" }
用作:
desudo vm1 docker-machine ls