2016-03-04 82 views
1

我想轻松连接我的壳泊坞窗,我可以通过输入以下命令这样做:shell脚本连接到泊坞窗守护

eval "$(docker-machine env docker-vm)" 

我想我会把这条线在一个简单的shell脚本。我发现,尽管命令通过在bash提示符处键入该行来工作,但如果放置在shell脚本中然后执行该脚本,该行将不起作用。运行脚本后,我将收到错误:Cannot connect to the Docker daemon. Is the docker daemon running on this host?

我正在使用oh-my-zsh和iterm2。

这里是小脚本拿到机器的运行:

#!/usr/bin/env bash 
docker-machine start docker-vm 
docker-machine ip docker-vm 
docker-machine env docker-vm 
# this line will not "execute" meaning it does not work from the script 
# this line does work proerly when executed from the command line 
eval "$(docker-machine env docker-vm)" 
+2

请更具体比'不工作'。你观察到什么行为?有没有错误信息? –

+0

试试这个:https://github.com/docker/machine/issues/1786。 'eval“$(docker-machine env --shell bash docker-vm)”' –

+0

这看起来像是在1.8中修复的。我使用的是docker 1.9。 --shell bash除了没有效果。 – Iannazzi

回答

0

保持简单,注意运行脚本的时候,它触发一个新的shell实例和eval命令上该实例这是执行脚本退出时被销毁。

因此,您需要在每个会话中运行eval

我建议你在.bash_profile或类似的地方注入命令,所以它试图每次连接docker-machine和docker。如果没有机器可以连接,则不会,并且显示没有主机正在运行的错误。

+0

好吧,添加' eval“$(docker-machine env default)”'到'.bash_profile'中......重启iterm并尝试docker ps接收错误无法连接到Docker守护进程。码头守护程序是否在该主机上运行?'。思考? – Iannazzi

+0

Ahh修改'〜/ .zprofile'添加'eval $(docker-machine env docker-vm)“'然后重新启动iterm。像魅力一样工作。你能修改你的答案来反映使用'oh-my-zsh'吗?这将有助于对不同shell的混淆 – Iannazzi

+0

已经在答案 - “.bash_profile或类似的”中。 –