DOCKER_HOST 网址的可能格式是什么?
What are the possible formats of the DOCKER_HOST URLs?
通过设置 DOCKER_HOST
环境变量,docker cli 可以访问远程 docker 服务器。
大多数情况下,tcp://<hostname-or-ip>:<port>
或有时 ssh://<hostname-or-ip>:<port>
。
不幸的是,docker 文档讨论了所有内容,除了该变量可能的 URL 格式。它们是什么,它们是如何工作的?
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 服务器 运行。请注意,docker on Windows 在 Linux VM 上运行,通过 Microsoft 的 HyperV 虚拟化引擎。它可能是通过 HyperV 提供的虚拟网络到达的。原生Windowsdocker使用不是很广泛
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),尽管我在代理配置中遇到了一些问题。
通过设置 DOCKER_HOST
环境变量,docker cli 可以访问远程 docker 服务器。
大多数情况下,tcp://<hostname-or-ip>:<port>
或有时 ssh://<hostname-or-ip>:<port>
。
不幸的是,docker 文档讨论了所有内容,除了该变量可能的 URL 格式。它们是什么,它们是如何工作的?
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 服务器 运行。请注意,docker on Windows 在 Linux VM 上运行,通过 Microsoft 的 HyperV 虚拟化引擎。它可能是通过 HyperV 提供的虚拟网络到达的。原生Windowsdocker使用不是很广泛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),尽管我在代理配置中遇到了一些问题。