如何检测是否安装了 docker for mac?
How can I detect if docker for mac is installed?
我有一些 makefiles
其中大部分内容应该 运行 无需配置。这些 makefile 过去使用过 docker-machine
。
有没有办法在 bash
中检测用户是否使用 docker 桌面作为 mac 而不是 docker-mac海因 ?
最好的方法是检查 DOCKER 环境变量是否存在:
- DOCKER_HOST
- DOCKER_MACHINE_NAME
- DOCKER_TLS_VERIFY
- DOCKER_CERT_PATH
当 eval $(docker-machine env)
为 运行 时设置所有这四个,并且需要与 docker-machine 一起使用。
Beta 版不需要设置它们中的任何一个,实际上需要您取消设置才能正常运行。
您还可以在 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 ]]
您可以执行以下操作:
docker info --format "{{.OperatingSystem}}" | grep -q "Docker for Mac"
通过以下方式检查退出代码:
if [[ $? -eq 0 ]]; then
echo "Docker for Mac!"
else
echo "Something else"
fi
These makefiles have used docker-machine
in the past.
如果可能,请停止使用 Machine。最近 Docker Mac installation instructions 注意 Docker 工具箱,但建议它现在是 legacy。考虑重构您的脚本以检查 Docker 桌面:
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 台式机,您应该寻找的是
-z
returns 如果字符串的长度为 0(来自 man bash
),则为真。
$(...)
是执行 grep
而不输出到 stdout
. 的命令替换
向 Joe for which cleanly filters the output from docker info
. And if you refactor to stop using Machine you can consider removing VirtualBox from your environment setup and leverage the performance gains of xhyve
致敬 – 包含在桌面版中。
您可以打开终端并输入 docker info
,如果 docker 安装在您的 mac 上,它将为您提供有关 docker 的详细信息。
如果显示 command not found : docker
则表示您的 mac.
上没有安装 docker
我有一些 makefiles
其中大部分内容应该 运行 无需配置。这些 makefile 过去使用过 docker-machine
。
有没有办法在 bash
中检测用户是否使用 docker 桌面作为 mac 而不是 docker-mac海因 ?
最好的方法是检查 DOCKER 环境变量是否存在:
- DOCKER_HOST
- DOCKER_MACHINE_NAME
- DOCKER_TLS_VERIFY
- DOCKER_CERT_PATH
当 eval $(docker-machine env)
为 运行 时设置所有这四个,并且需要与 docker-machine 一起使用。
Beta 版不需要设置它们中的任何一个,实际上需要您取消设置才能正常运行。
您还可以在 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 ]]
您可以执行以下操作:
docker info --format "{{.OperatingSystem}}" | grep -q "Docker for Mac"
通过以下方式检查退出代码:
if [[ $? -eq 0 ]]; then
echo "Docker for Mac!"
else
echo "Something else"
fi
These makefiles have used
docker-machine
in the past.
如果可能,请停止使用 Machine。最近 Docker Mac installation instructions 注意 Docker 工具箱,但建议它现在是 legacy。考虑重构您的脚本以检查 Docker 桌面:
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 台式机,您应该寻找的是-z
returns 如果字符串的长度为 0(来自man bash
),则为真。$(...)
是执行grep
而不输出到stdout
. 的命令替换
向 Joe for docker info
. And if you refactor to stop using Machine you can consider removing VirtualBox from your environment setup and leverage the performance gains of xhyve
致敬 – 包含在桌面版中。
您可以打开终端并输入 docker info
,如果 docker 安装在您的 mac 上,它将为您提供有关 docker 的详细信息。
如果显示 command not found : docker
则表示您的 mac.