DOCKER_HOST URL 的可能格式有哪些?

pet*_*ica 3 docker docker-cli

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

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

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

pet*_*ica 10

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

可能的值如下:

  • tcp://1.2.3.4:2375- 它通过远程系统的 TCP 端口 2375 连接到 docker 服务器。除了 IP 之外,还可以使用主机名。忽略端口字段,在正常模式下默认为 2375,如果我们使用 TLS 加密,则默认为 2376(应使用该--tls标志调用 Docker 客户端)。
  • unix:///path/to/socket- 它连接到侦听本地 unix 套接字的 docker 服务器/path/to/socket。Unix 套接字仅存在于 Linux(及 co)系统上。该路径不必是绝对路径。默认值为/var/run/docker.sock(如果 则连接DOCKER_HOST=unix://)。
  • npipe:///./pipe/docker_engine- 命名管道类似于 Unix 套接字,但在 Windows 世界中。它可能连接在 Windows 上运行的本地 docker 服务器。请注意,Windows 上的 docker 通过 Microsoft 的 HyperV 虚拟化引擎运行在 Linux VM 上。它可能是通过 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 ( //host:port) 默认为tcp://. 任何其他 URL 格式都会被拒绝并显示Invalid bind address format错误消息。

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