伙计们,
我在这里遵循Docker教程:https://docs.docker.com/get-started/part4/#configure-a-docker-machine-shell-to-the-swarm-manager并在运行此特定命令时遇到阻力:
eval $(docker-machine env myvm1)
我实际上正在运行(如上所述,但添加了sudo).
eval $(sudo docker-machine env myvm1)
我从命令行得到没有输出告诉我已经完成的任何操作以及我何时运行:
sudo docker-machine ls
我看到myvm1没有按预期的活动状态.我知道这一步没有必要,但我想了解为什么命令不起作用并尝试修复它.
我正在运行码头17.09.0-ce
在Ubuntu 16.04 LTS上
zsh shell(尝试切换到bash)
顺便说一句,这只是在我的本地机器上,而不是服务器.
任何帮助将非常感激.
最佳答案
如果你在sudo的远端运行eval,那就不会出错了:
sudo sh -c 'eval "$(docker-machine env myvm1)"; docker-machine ls'
否则,通过评估docker-machine env的输出而设置的环境变量不一定(禁止某些特定的/ etc / sudoers配置)传播到未来的docker-machine调用.
# 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