boot2docker命令适用于shell,但不适用于脚本

时间:2014-12-26 23:34:16

标签: macos bash ssh docker boot2docker

这里的码头工具新手。我有一系列命令,如果在shell上启动它们,工作得很好,但是如果我把它们放在脚本中,就不要。

boot2docker destroy
boot2docker init
boot2docker start
boot2docker ssh &
host=$(boot2docker ip 2> /dev/null)
# everything works fine up to here
ssh -i $HOME/.ssh/id_boot2docker -o "StrictHostKeyChecking no" -o "UserKnownHostsFile /dev/null" docker@$host docker run --net=host my-image

如果我不尝试通过ssh运行命令,一切正常。即:

ssh -i $HOME/.ssh/id_boot2docker -o "StrictHostKeyChecking no" -o "UserKnownHostsFile /dev/null" docker@$host

这会打开docker ssh提示符。但是,如果我通过脚本运行命令(这是我实际需要做的),我收到错误消息:

level="fatal" msg="Post http:///var/run/docker.sock/v1.16/containers/create: dial unix /var/run/docker.sock: no such file or directory. Are you trying to connect to a TLS-enabled daemon without TLS?"

同样,如果我只是将最后一个命令或整个命令输入shell,没有问题。如何使这个脚本工作?

由于

更新 如果我将最后一行放在它自己的脚本中,并从命令行依次运行这两个脚本,一切都很好(就像只是按顺序键入所有命令一样。)如果我链接脚本,或者创建第三个脚本来运行按顺序,我得到错误。我该怎么做?

由于

1 个答案:

答案 0 :(得分:0)

当您尝试使用它时,

host可能尚未定义。您可以在运行echo之前通过ssh确认该值。最简单的解决方案是将这两行放在同一个文件中:

host=$(boot2docker ip 2> /dev/null)
ssh -i $HOME/.ssh/id_boot2docker -o "StrictHostKeyChecking no" -o "UserKnownHostsFile /dev/null" docker@$host docker run --net=host my-image