如何检测是否安装了Docker for macOS?

sdnqo3pr  于 2023-10-16  发布在  Docker
关注(0)|答案(6)|浏览(178)

我有一些makefiles,其中大部分的东西应该在没有配置的情况下运行。这些makefiles在过去使用过docker-machine
有没有办法在Bash中检测用户是否使用Docker Desktop for Mac而不是docker-machine

oiopk7p5

oiopk7p51#

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

  • DOCKER_主机
  • DOCKER_MACHINE_NAME
  • DOCKER_TLS_VERIFY
  • DOCKER_CERT_PATH

所有这四个都是在运行eval $(docker-machine env)时设置的,并且需要用于docker-machine。
测试版不需要设置它们中的任何一个,实际上需要您取消设置它们才能正常工作。
你也可以在docker info命令中查找“moby”(mac虚拟机的docker名称):

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

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

uz75evzq

uz75evzq2#

你可以打开终端,只需输入docker info,它就会给你给予关于docker的细节,如果它安装在你的mac上。
如果它显示command not found : docker,那么这意味着你的mac上没有安装docker。

hgc7kmma

hgc7kmma3#

这些makefiles在过去使用过docker-machine
如果可能,停止使用机器。最近的Docker for Mac installation instructions注意到Docker的错误,但建议它现在是 * 遗留 *。考虑重构你的脚本来检查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}}'是一个从docker info查询的Go模板。
  • grep 'Docker Desktop'是你运行Docker Desktop时应该寻找的。
  • -z如果字符串的长度为0(来自man bash),则返回true。
  • $(...)是执行grep而不输出到stdout的命令替换。

Hat tip to Joe for his answer,它干净地过滤了docker info的输出。如果你重构停止使用机器,你可以考虑从你的环境设置中删除VirtualBox,并利用桌面附带的xhyve的性能优势。

8e2ybdfx

8e2ybdfx4#

您可以执行以下操作:

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

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

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

mqxuamgl5#

检查版本是否已安装。这样你就可以知道它是否安装在你的机器上。把这个输入你的终端。
docker --version

lawou6xi

lawou6xi6#

目前为止我发现的最简单的方法是:

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

相关问题