如何检测是否安装了docker for mac?

时间:2016-07-06 12:26:24

标签: docker docker-machine docker-for-mac docker-desktop

我有一些docker-machine,其中大部分内容应该在没有配置的情况下运行。这些makefile过去曾使用bash

有没有办法在Column0 Column1 Column2 Column3 0 Entry_1 0.685 Record_1 0.69-S$ 0.685 1 Entry_2 0.036 Record_2 0.685 2 Entry_3 05/Jul/2016 Record_3 0.72-S$ 0.4 3 Entry_4 0.338 Record_4 178.8 mm 4 Entry_5 0.41 Record_5 0.06 5 Entry_6 122.48 Record_6 17.29% 6 Entry_7 0.5 Record_7 0.58 as of 05/Jul/2016 cols = df['Column0'].append(df['Column2']) vals = df['Column1'].append(df['Column3']) newdf = pd.DataFrame(vals).T newdf.columns = cols newdf Entry_1 Entry_2 Entry_3 Entry_4 Entry_5 Entry_6 Entry_7 Record_1 Record_2 Record_3 Record_4 Record_5 Record_6 Record_7 0 0.685 0.036 05/Jul/2016 0.338 0.41 122.48 0.5 0.69-S$ 0.685 0.685 0.72-S$ 0.4 178.8 mm 0.06 17.29% 0.58 as of 05/Jul/2016 中检测用户是否使用 docker desktop for mac 而不是 docker-machine

4 个答案:

答案 0 :(得分:4)

到目前为止,我发现的最干净的方式是:

[[ $(docker version --format "{{.Server.KernelVersion}}") == *-moby ]]

答案 1 :(得分:2)

最好的方法是检查是否存在DOCKER环境变量:

  • DOCKER_HOST
  • DOCKER_MACHINE_NAME
  • DOCKER_TLS_VERIFY
  • DOCKER_CERT_PATH

运行eval $(docker-machine env)时,所有这四个都已设置,并且需要与docker-machine一起使用。

测试版不需要设置其中任何一个,实际上要求您取消设置才能正常运行。

您还可以在docker info命令中查找" moby" (mac VM的docker的名称):

docker info | grep -q moby && echo "Docker for mac beta" || echo "Not docker for mac beta"

然而,这取决于docker info结果的一致性。

答案 2 :(得分:0)

您可以执行以下操作:

docker info --format "{{.OperatingSystem}}" | grep -q "Docker for Mac"

通过以下方式检查退出代码:

if [[ $? -eq 0 ]]; then
    echo "Docker for Mac!"
else
    echo "Something else"
fi

答案 3 :(得分:0)

  

这些makefile过去使用过docker-machine

如果可能,请停止使用机器。最新的Mac版Docker installation instructions注意到Docker Toolbox,但建议它现在是 legacy 。考虑重构脚本来代替检查Docker Desktop:

if [[ -n "$(docker info --format '{{.OperatingSystem}}' | grep 'Docker Desktop')" ]]; then
    echo "Docker Desktop found. Skipping installation ..."
else
    echo "WARNING! Docker Desktop not installed:"
    echo "  * Install docker desktop from <https://docs.docker.com/docker-for-mac/install/>"
fi

说明

  • --format '{{.OperatingSystem}}'是一个Go模板,可从docker info查询。
  • grep 'Docker Desktop'是运行Docker Desktop时应该寻找的。 如果字符串的长度为0(来自-z),则
  • man bash返回true。
  • $(...)是命令替换,它执行grep而不输出到stdout

Joehis answer提示,将对docker info的输出进行干净过滤。而且,如果您决定停止使用计算机,则可以考虑从环境设置中删除VirtualBox,并利用xhyve的性能提高–台式机随附。