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

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

有没有在bash中检测,如果用户是使用docker而不是docker机的mac?

最好的方法是检查DOCKER环境variables的存在性:

  • DOCKER_HOST
  • DOCKER_MACHINE_NAME
  • DOCKER_TLS_VERIFY
  • DOCKER_CERT_PATH

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

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


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

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

但是,这将取决于docker info结果的一致性。

目前为止我发现的最清洁的方式是:

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