我有一些makefiles,其中大部分的东西应该在没有配置的情况下运行。这些makefiles在过去使用过docker-machine。有没有办法在Bash中检测用户是否使用Docker Desktop for Mac而不是docker-machine?
docker-machine
oiopk7p51#
最好的方法是检查DOCKER环境变量是否存在:
所有这四个都是在运行eval $(docker-machine env)时设置的,并且需要用于docker-machine。测试版不需要设置它们中的任何一个,实际上需要您取消设置它们才能正常工作。你也可以在docker info命令中查找“moby”(mac虚拟机的docker名称):
eval $(docker-machine env)
docker info
docker info | grep -q moby && echo "Docker for mac beta" || echo "Not docker for mac beta"
然而,这将取决于docker info结果的一致性。
uz75evzq2#
你可以打开终端,只需输入docker info,它就会给你给予关于docker的细节,如果它安装在你的mac上。如果它显示command not found : docker,那么这意味着你的mac上没有安装docker。
command not found : docker
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}}'
grep 'Docker Desktop'
-z
man bash
$(...)
grep
stdout
Hat tip to Joe for his answer,它干净地过滤了docker info的输出。如果你重构停止使用机器,你可以考虑从你的环境设置中删除VirtualBox,并利用桌面附带的xhyve的性能优势。
xhyve
8e2ybdfx4#
您可以执行以下操作:
docker info --format "{{.OperatingSystem}}" | grep -q "Docker for Mac"
通过以下方式检查退出代码:
if [[ $? -eq 0 ]]; then echo "Docker for Mac!" else echo "Something else" fi
mqxuamgl5#
检查版本是否已安装。这样你就可以知道它是否安装在你的机器上。把这个输入你的终端。docker --version
docker --version
lawou6xi6#
目前为止我发现的最简单的方法是:
[[ $(docker version --format "{{.Server.KernelVersion}}") == *-moby ]]
6条答案
按热度按时间oiopk7p51#
最好的方法是检查DOCKER环境变量是否存在:
所有这四个都是在运行
eval $(docker-machine env)
时设置的,并且需要用于docker-machine。测试版不需要设置它们中的任何一个,实际上需要您取消设置它们才能正常工作。
你也可以在
docker info
命令中查找“moby”(mac虚拟机的docker名称):然而,这将取决于
docker info
结果的一致性。uz75evzq2#
你可以打开终端,只需输入
docker info
,它就会给你给予关于docker的细节,如果它安装在你的mac上。如果它显示
command not found : docker
,那么这意味着你的mac上没有安装docker。hgc7kmma3#
这些makefiles在过去使用过
docker-machine
。如果可能,停止使用机器。最近的Docker for Mac installation instructions注意到Docker的错误,但建议它现在是 * 遗留 *。考虑重构你的脚本来检查Docker Desktop:
解释
--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
的性能优势。8e2ybdfx4#
您可以执行以下操作:
通过以下方式检查退出代码:
mqxuamgl5#
检查版本是否已安装。这样你就可以知道它是否安装在你的机器上。把这个输入你的终端。
docker --version
lawou6xi6#
目前为止我发现的最简单的方法是: