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

脚本如何区分Docker Toolbox和Docker for Windows?,docker,scripting,docker-for-windows,docker-toolbox,docker-desktop,Docker,Scripting,Docker For Windows,Docker Toolbox,Docker Desktop,在我目前的团队中,我们仍在从Docker Toolbox过渡到Docker Desktop for Windows。我们的许多脚本仍然假设您正在VirtualBox上运行Docker Toolbox(比如如何装载驱动器,斜杠或驱动器名称如何用于这些装载) 是否有可靠的方法从脚本内部判断docker是来自docker Toolbox还是docker Desktop for Windows?工具箱通过docker machine工作。docker客户端指向虚拟机的方式是通过许多环境变量,您可以通过运

在我目前的团队中,我们仍在从Docker Toolbox过渡到Docker Desktop for Windows。我们的许多脚本仍然假设您正在VirtualBox上运行Docker Toolbox(比如如何装载驱动器,斜杠或驱动器名称如何用于这些装载)


是否有可靠的方法从脚本内部判断
docker
是来自docker Toolbox还是docker Desktop for Windows?

工具箱通过
docker machine
工作。
docker
客户端指向虚拟机的方式是通过许多环境变量,您可以通过运行
docker machine env default

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 VM的
/var/run/Docker.sock
套接字,因此由于缺少环境变量,很容易检测到这一点

我相信Docker for Windows以同样的方式使用命名管道(
/./pipe/Docker\u engine
),因此您也应该能够通过环境中缺少
Docker\u主机来判断


如果Docker for Windows仍然使用该环境,则Toolbox和Docker for Windows变量之间将存在差异<代码>DOCKER\u主机
将位于不同的范围
DOCKER\u CERT\u PATH
将不包括
machine
等。

您是否试图在windows主机上检测到此问题?因此,从Windows主机运行
docker
命令的脚本;docker预计会在路上。有很多信息,谢谢。我会报告我的发现。
#!/usr/bin/env bash

dockerIsToolBox() {
  if [ "${DOCKER_TOOLBOX_INSTALL_PATH}" ];then
    echo true
  else
    echo false
  fi
}