如何检测是否安装了适用于Mac的Docker?

问题描述 投票:3回答:3

我有一些makefiles,其中大多数内容无需配置即可运行。这些makefile过去使用过docker-machine

是否有一种方法可以在bash中检测用户是否使用的是[[mac的docker桌面而不是docker-machine

docker docker-machine docker-for-mac docker-desktop
3个回答
1
投票
最好的方法是检查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结果的一致性。

  • 4
    投票
    到目前为止,我发现的最干净的方法是:

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


    1
    投票
    您可以执行以下操作:

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

    然后检查退出代码,例如:

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

    [这通过--filter使用docker的内置Go模板将OS信息与docker info返回的有效负载隔离,然后在安静模式下使用grep检查所需的字符串文字。

    注意:较新的Mac版Docker从过滤器调用返回"Docker Desktop"

    © www.soinside.com 2019 - 2024. All rights reserved.