【问题标题】:What are the possible formats of the DOCKER_HOST URLs?DOCKER_HOST URL 的可能格式是什么?
【发布时间】:2020-07-06 13:26:48
【问题描述】:

通过设置DOCKER_HOST 环境变量,docker cli 可以访问远程 docker 服务器。

大多数情况下使用tcp://<hostname-or-ip>:<port> 或有时ssh://<hostname-or-ip>:<port>

不幸的是,docker 文档讨论了所有内容,除了这个变量可能的 URL 格式。它们是什么,它们是如何工作的?

【问题讨论】:

    标签: docker docker-cli


    【解决方案1】:

    DOCKER_HOST 变量的解析发生在 docker-cli 的 opts/hosts.go 源代码片段中的 parseDockerDaemonHost 函数中。

    可能的值如下:

    • tcp://1.2.3.4:2375 - 它通过远程系统的 TCP 端口 2375 连接到 docker 服务器。除了 IP,还可以使用主机名。省略端口字段,在正常模式下默认为 2375,如果我们使用 TLS 加密,则默认为 2376(应使用 --tls 标志调用 docker 客户端)。
    • unix:///path/to/socket - 它连接到监听本地 unix 套接字 /path/to/socket 的 docker 服务器。 Unix 套接字仅存在于 Linux (& co) 系统上。路径不需要是绝对路径。默认值为/var/run/docker.sock(如果DOCKER_HOST=unix:// 则连接)。
    • npipe:///./pipe/docker_engine - 命名管道类似于 Unix 套接字,但在 Windows 世界中。它可能连接在 Windows 上运行的本地 docker 服务器。请注意,Windows 上的 docker 在 Linux 虚拟机上运行,​​通过 Microsoft 的 HyperV 虚拟化引擎。它可能是通过 HyperV 提供的虚拟网络到达的。原生 Windows docker 使用并不广泛。
    • fd://1.2.3.4:5678 - 与它的名字相反,它可能与文件描述符无关。它的行为类似于 tcp://,只是端口号不默认为 2375。确切的工作可能需要在 docker-cli 源中进一步挖掘。
    • ssh://1.2.3.4:22 - 它调用ssh 命令远程登录远程服务器。 docker 命令应该在默认的PATH 中可用。它在那里执行docker 命令,将完全相同的参数传递给它,我们在本地调用它们。可能它只能在远程端的默认地址(/var/run/docker.sock)上连接 docker 服务器。

    任何其他 URL 格式都会被拒绝并显示 Invalid bind address format 错误消息。

    通信协议是 http(s),尽管我在代理配置中遇到了一些问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-03
      • 2020-10-28
      • 2015-06-26
      • 1970-01-01
      • 2011-08-17
      • 1970-01-01
      • 2012-01-01
      • 1970-01-01
      相关资源
      最近更新 更多