在 ssh shell 脚本中检查 docker 版本

use*_*992 4 ssh shell docker

我正在 shell 脚本中 sshing 到服务器并运行一些 docker 命令。然而,某些命令在 docker 1.7 版本中失败。我对 1.7 有一个修复,但如果我一直使用它,运行 shell 脚本会花费更长的时间。所以我想检查该版本,如果是 1.7,则回退到较慢的脚本。否则运行快速版本。

想着类似的事情

if ssh -l root $1 "docker -v === '1.7.*'"
then
    echo "Docker version 1.7!"
else 
    echo "Docker version not 1.7!"
fi
Run Code Online (Sandbox Code Playgroud)

显然这是行不通的。有任何想法吗?

小智 8

也许,有时需要检查版本范围。作为变体可能的解决方案:

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
Run Code Online (Sandbox Code Playgroud)