【问题标题】:exporting DOCKER_HOST in .bashrc produces a different result to the same command in the terminal在 .bashrc 中导出 DOCKER_HOST 会产生与终端中相同命令不同的结果
【发布时间】:2014-08-10 03:18:33
【问题描述】:

在我可以使用我的docker 容器(在 OSX 上使用 Boot2Docker)之前,我总是必须记住进入

export DOCKER_HOST=tcp://$(boot2docker ip 2>/dev/null):2375

在我的终端里,我自然经常忘记这一点。

所以我想我只是将该行添加到我的 ~/.bashrc 文件中,但是当我完成此操作并检查 DOCKER_HOST 的值时,它是 tcp://192.168.42.43:4243 而不是 tcp://192.168.42.43:2375

分解:

  • boot2docker ip => "VM 的 Host only 接口 IP 地址为:192.168.59.103"
  • boot2docker ip 2 => "VM 的 Host only 接口 IP 地址为:192.168.59.103"
  • boot2docker ip 2>/dev/null => "192.168.59.103"(好吧,我明白了,但我不知道它是如何工作的,我也不知道 :4243 是从哪里来的。”

这里实际发生了什么,为什么端口不同?

【问题讨论】:

  • 仅供参考:> 重定向 stdout2> 重定向 stderr
  • 好的,这很有趣。 ta.

标签: bash docker .bash-profile boot2docker


【解决方案1】:

如果您希望为您打开的每个终端自动设置 DOCKER_HOST 环境变量,请使用“boot2docker shellinit”命令。您可以将此行添加到您的 .bash_profile 以处理业务:

$(boot2docker shellinit)

不幸的是,如果您在打开终端时 boot2docker 虚拟机没有运行,这会给您一个恼人的错误消息(“运行中的错误:虚拟机“boot2docker-vm”没有运行。”)把它放在你的 .bash_profile 中抑制错误消息:

$(boot2docker shellinit 2>/dev/null)

更多详情at Github

注意:如果您使用 Docker Machine 来管理 boot2docker,则等效命令为

eval "$(docker-machine env MACHINE-NAME)"

其中 MACHINE-NAME 是您的 boot2docker 机器的名称。

【讨论】:

  • +1,你甚至可以简单地使用$(boot2docker shellinit)
【解决方案2】:

其他东西正在为您设置该环境变量。你为什么要把stderr从那个命令转储到/dev/nullstderr 有额外的信息吗?

我愿意

export DOCKER_HOST="tcp://$(boot2docker ip 2>/dev/null):2375" ;
echo "Docker Host is set to ${DOCKER_HOST}"

对于设置的一些调试,然后在稍后阶段查询该值以查看是否有其他问题。

【讨论】:

  • 是的,boot2docker ip 命令非常冗长,并产生`“VM 的主机唯一接口 IP 地址是:192.168.59.103”` - 结果我的问题是我应该把导出命令进入~/.bash_profile 而不是~/.bashrc
【解决方案3】:

我觉得boot2docker的socket命令在这里比较有用,我们也可以简化一下。

如果您在终端中运行之前没有进行设置:

  echo export DOCKER_HOST=\`boot2docker socket 2\>/dev/null\` >> ~/.bashrc

如果您已经搞砸了,只需将 .bashrc 中的行更改为:

  export DOCKER_HOST=`boot2docker socket 2>/dev/null`

现在要测试它是否有效,打开一个新终端并运行docker run hello-world

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-11
    相关资源
    最近更新 更多