2016-03-04 81 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或類似的」中。 –