【问题标题】:How can a script distinguish Docker Toolbox and Docker for Windows?脚本如何区分 Docker Toolbox 和 Docker for Windows?
【发布时间】:2017-08-31 17:15:20
【问题描述】:

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

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

【问题讨论】:

  • 您是否尝试在 Windows 主机上检测到这一点?所以从您运行docker 命令的脚本中?
  • Windows 主机; docker 应该在 PATH 上。

标签: docker scripting docker-for-windows docker-toolbox docker-desktop


【解决方案1】:
#!/usr/bin/env bash

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

【讨论】:

    【解决方案2】:

    Toolbox 通过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 等。

    【讨论】:

    • 很多信息,谢谢。将报告我的发现。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-22
    • 1970-01-01
    • 1970-01-01
    • 2016-03-13
    • 2016-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多