连接到docker守护进程的shell脚本

连接到docker守护进程的shell脚本,shell,docker,Shell,Docker,我想轻松地将shell连接到docker,我可以通过输入以下命令来实现: eval "$(docker-machine env docker-vm)" 我想我应该把这一行放在一个简单的shell脚本中。我发现,虽然命令是通过在bash提示符下键入这一行来工作的,但如果将这一行放在shell脚本中,然后执行脚本,它将无法工作。运行脚本后,我将收到错误:无法连接到Docker守护进程。docker守护进程是否在此主机上运行? 我正在使用oh my zsh和iterm2 下面是让机器运行的小脚本:

我想轻松地将shell连接到docker,我可以通过输入以下命令来实现:

eval "$(docker-machine env docker-vm)"
我想我应该把这一行放在一个简单的shell脚本中。我发现,虽然命令是通过在bash提示符下键入这一行来工作的,但如果将这一行放在shell脚本中,然后执行脚本,它将无法工作。运行脚本后,我将收到错误:
无法连接到Docker守护进程。docker守护进程是否在此主机上运行?

我正在使用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)"

为了保持简单,请注意,在运行脚本时,它会触发一个新的shell实例,并且
eval
命令会在该实例上执行,该实例在脚本退出时会被销毁

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


我建议您在
.bash\u profile
或类似文件中插入该命令,以便它每次都尝试连接docker机器和docker。如果没有要连接的计算机,它将不会连接,并且错误显示没有主机正在运行。

保持简单,请注意,在运行脚本时,它会触发一个新的shell实例,并且
eval
命令将在该实例上执行,该实例在脚本退出时被销毁

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


我建议您在
.bash\u profile
或类似文件中插入该命令,以便它每次都尝试连接docker机器和docker。如果没有要连接的计算机,它将不会连接,并且出现错误,显示没有主机正在运行。

请比“不工作”更具体一些。你观察到什么行为?是否有任何错误消息?请尝试以下操作:
eval“$(docker机器环境——shell bash docker vm)”
这看起来像是在1.8中修复的。我正在使用docker 1.9。添加--shell bash没有任何效果。我使用Docker Quickstart终端,它是从Docker网站下载的传统终端。如果您没有安装该部分,您可以在此处看到脚本:。对我来说,我运行那个脚本,然后我是金色的,没有问题。它为bash终端设置环境变量和所有内容。我还将
eval“$(docker machine env default)”
放入我的.bash_配置文件中,因此它在每个终端会话中都存在。您从命令
docker machine ls
的输出是什么?@CtheGood是的是的,效果很好,只需将脚本复制到我自己的
start.sh
,它位于我的docker文件夹中。每次我打开一个新的
ohmyzsh
窗口时,让它工作可能会更好,因为我通常这样做是为了启动或连接到一个容器,这意味着我需要导航到脚本…请比“不工作”更具体。你观察到什么行为?是否有任何错误消息?请尝试以下操作:
eval“$(docker机器环境——shell bash docker vm)”
这看起来像是在1.8中修复的。我正在使用docker 1.9。添加--shell bash没有任何效果。我使用Docker Quickstart终端,它是从Docker网站下载的传统终端。如果您没有安装该部分,您可以在此处看到脚本:。对我来说,我运行那个脚本,然后我是金色的,没有问题。它为bash终端设置环境变量和所有内容。我还将
eval“$(docker machine env default)”
放入我的.bash_配置文件中,因此它在每个终端会话中都存在。您从命令
docker machine ls
的输出是什么?@CtheGood是的是的,效果很好,只需将脚本复制到我自己的
start.sh
,它位于我的docker文件夹中。每次我打开一个新的
ohmyzsh
窗口时让它工作可能会更好,因为我通常这样做是为了启动或连接到一个容器,这意味着我需要导航到脚本…好的,添加
eval“$(docker machine env default)”
。bash\u profile
。。。重新启动
iterm
并尝试
docker ps
接收错误
无法连接到docker守护程序。docker守护进程是否在此主机上运行?
。想法?啊,修改
~/.zprofile
加载项
eval“$(docker机器环境docker虚拟机)
,然后重新启动
iterm
。工作得很有魅力。您能否使用
oh my zsh
修改您的答案以反映问题?这将有助于混淆不同的问题shells@Iannazzi对不起,我到现在才查这个。。无论如何,既然已经提到了“bash简介或类似内容”,我想人们会明白的。。就像您所做的:)好的,将
eval“$(docker机器环境默认值)
添加到
中。。。重新启动
iterm
并尝试
docker ps
接收错误
无法连接到docker守护程序。docker守护进程是否在此主机上运行?
。想法?啊,修改
~/.zprofile
加载项
eval“$(docker机器环境docker虚拟机)
,然后重新启动
iterm
。工作得很有魅力。您能否使用
oh my zsh
修改您的答案以反映问题?这将有助于混淆不同的问题shells@Iannazzi对不起,我到现在才查这个。。无论如何,既然已经提到了“bash简介或类似内容”,我想人们会明白的。。像你一样:)