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

问题描述 投票:2回答:2

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

有没有一种可靠的方法可以从脚本内部判断docker是来自Docker Toolbox还是来自Docker Desktop for Windows?

docker scripting docker-for-windows docker-toolbox docker-desktop
2个回答
2
投票

工具箱通过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_engine),所以你也应该能够通过环境中缺少DOCKER_HOST来判断。

如果Docker for Windows仍然使用该环境,则Toolbox和Docker for Windows变量之间将存在差异。 DOCKER_HOST将在不同的范围内。 DOCKER_CERT_PATH不包括machine等。


4
投票
#!/usr/bin/env bash

dockerIsToolBox() {
  if [ "${DOCKER_TOOLBOX_INSTALL_PATH}" ];then
    echo true
  else
    echo false
  fi
}
© www.soinside.com 2019 - 2024. All rights reserved.