【问题标题】:boot2docker command works on shell, but not in scriptboot2docker 命令适用于 shell,但不适用于脚本
【发布时间】:2015-02-24 02:44:31
【问题描述】:

这里是 docker 新手。我有一系列命令,如果在 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 中,没有问题。我怎样才能使这个脚本工作?

谢谢

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

谢谢

【问题讨论】:

  • 实际上,如果您回答问题而不是投反对票,那会更有帮助。

标签: macos bash ssh docker boot2docker


【解决方案1】:

host 在您尝试使用它时可能未定义。在运行ssh 之前,您可能可以通过echoing 来确认它的值。最简单的解决方案是将这两行放在同一个文件中:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-28
    • 2017-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-16
    相关资源
    最近更新 更多