加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 03:42:46 所属栏目:安全 来源:网络整理
导读:伙计们, 我在这里遵循Docker教程:https://docs.docker.com/get-started/part4/#configure-a-docker-machine-shell-to-the-swarm-manager并在运行此特定命令时遇到阻力: eval $(docker-machine env myvm1) 我实际上正在运行(如上所述,但添加了sudo). eval $

伙计们,

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读