一个脚本如何区分Docker Toolbox和Docker for Windows?

在我目前的团队中,我们仍在从Docker Toolbox转换到Docker for Windows。 我们的许多脚本仍然假定你正在VirtualBox上运行Docker Toolbox(比如如何装载驱动器,如何使用斜杠或驱动器名称)。

有一个可靠的方法来告诉脚本内部, docker是来自Docker Toolbox还是Docker for Windows?

工具箱通过docker-machinedocker客户端被引导到虚拟机的方式是通过运行docker-machine env default可以看到的一些环境variables

 SET DOCKER_TLS_VERIFY=1 SET DOCKER_HOST=tcp://192.168.99.100:2376 SET DOCKER_CERT_PATH=/user/.docker/machine/machines/default SET DOCKER_MACHINE_NAME=default REM Run this command to configure your shell: REM @FOR /f "tokens=*" %i IN ('docker-machine env --shell cmd default') DO @%i 

Docker for Mac直接连接到映射到Docker虚拟机的/var/run/docker.sock套接字,所以很容易通过缺less环境variables来检测。

我相信Docker for Windows以相同的方式使用一个命名pipe道( //./pipe/docker_engine ),所以你也应该可以通过在环境中缺lessDOCKER_HOST来判断。

如果Docker for Windows仍然使用该环境,那么Toolbox和Docker for Windowsvariables之间会有差异。 DOCKER_HOST将在不同的范围。 DOCKER_CERT_PATH将不包含machine