脚本如何区分Docker Toolbox和Docker for Windows?
在我目前的团队中,我们仍在从Docker Toolbox过渡到Docker Desktop for Windows。我们的许多脚本仍然假设您正在VirtualBox上运行Docker Toolbox(比如如何装载驱动器,斜杠或驱动器名称如何用于这些装载)脚本如何区分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
是来自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
}