linux – eval $(docker-machine env myvm1)不会切换到shell来与myvm1通信

前端之家收集整理的这篇文章主要介绍了linux – eval $(docker-machine env myvm1)不会切换到shell来与myvm1通信前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

伙计们,

我在这里遵循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调用.

如果你想用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
原文链接:https://www.f2er.com/docker/435885.html

猜你在找的Docker相关文章