首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ssh shell脚本中检查docker版本。

在ssh shell脚本中检查docker版本。
EN

Stack Overflow用户
提问于 2016-08-08 22:29:03
回答 3查看 2.6K关注 0票数 4

我正在运行shell脚本中的服务器并运行一些docker命令。但是,有些命令在docker版本1.7中失败。我有一个1.7的修复程序,但是如果我一直使用它,运行shell脚本需要更长的时间。所以我想检查一下那个版本,如果是1.7,回到慢脚本。否则运行好的快速版本。

想些像

代码语言:javascript
复制
if ssh -l root $1 "docker -v === '1.7.*'"
then
    echo "Docker version 1.7!"
else 
    echo "Docker version not 1.7!"
fi

很明显这不管用。有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-08-08 22:33:20

您可以使用:

代码语言:javascript
复制
if [[ $(ssh -l root "$1" 'docker -v') == *" 1.7."* ]]; then
    echo 'Docker version 1.7!'
else 
    echo 'Docker version not 1.7!'
fi
  • 您需要使用命令替换ssh获取整个$(...)命令的输出。
  • Shell支持===,但不支持===
  • 将字词保留在引号之外
票数 1
EN

Stack Overflow用户

发布于 2019-12-11 13:44:57

也许,有时需要检查的版本范围。作为各种可能的解决办法:

代码语言:javascript
复制
SERVER_VERSION=$(docker version -f "{{.Server.Version}}")
SERVER_VERSION_MAJOR=$(echo "$SERVER_VERSION"| cut -d'.' -f 1)
SERVER_VERSION_MINOR=$(echo "$SERVER_VERSION"| cut -d'.' -f 2)
SERVER_VERSION_BUILD=$(echo "$SERVER_VERSION"| cut -d'.' -f 3)

if [ "${SERVER_VERSION_MAJOR}" -ge 19 ] && \
   [ "${SERVER_VERSION_MINOR}" -ge 0 ]  && \
   [ "${SERVER_VERSION_BUILD}" -ge 3 ]; then
    echo "Docker version >= 19.0.3 it's ok"
else
    echo "Docker version less than 19.0.3 can't continue"
    exit 1
fi
票数 6
EN

Stack Overflow用户

发布于 2016-08-08 23:22:58

Docker有一个-H选项,允许您指向另一个主机上的停靠引擎。使用此方法获取版本并确定要运行的内容。

代码语言:javascript
复制
if [[ $(docker -H my.host version | grep '1.7') ]]; then
    Thing 1
else
    Thing 2
fi
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38839444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档