Docker守护进程可以监听 Docker Engine API通过三种不同类型的Socket请求:unix,tcp,和fd。默认情况下,unix在处创建域套接字(或IPC套接字) /var/run/docker.sock,需要root权限或docker组成员身份。
如果需要远程访问Docker守护程序,则需要启用tcp Socket。请注意,默认设置可提供对Docker守护程序的未加密和未经身份验证的直接访问-应使用内置的HTTPS加密套接字或在其前面放置安全的Web代理来保护其安全。您可以使用IP地址:2375在所有网络接口上的端口上侦听-H tcp://0.0.0.0:2375,或在特定网络接口上侦听端口-H tcp://192.168.59.103:2375。通常将端口2375用于未加密,将端口2376用于与守护程序进行加密通信。
如果您使用的是HTTPS加密套接字,请记住仅支持TLS1.0和更高版本。出于安全原因,不再支持SSLv3及以下协议。
在基于Systemd的系统上,可以通过Systemd socket activation与守护程序进行通信 dockerd -H fd://。使用fd://将在大多数设置中完美地工作,但您也可以指定单个套接字:dockerd -H fd://3。如果找不到指定的socket activation文件,则Docker将退出。您可以在Docker源代码树中找到将Systemd套接字激活与Docker和Systemd一起使用的示例 。
您可以使用多个-H选项将Docker守护程序配置为同时侦听多个套接字:
$ sudo dockerd -H unix:///var/run/docker.sock -H tcp://192.168.59.106 -H tcp://10.10.10.2
Docker客户端将使用DOCKER_HOST环境变量-H为客户端设置 标志。使用一个下面的命令:
$ docker -H tcp://0.0.0.0:2375 ps
$ export DOCKER_HOST="tcp://0.0.0.0:2375"
$ docker ps
将DOCKER_TLS_VERIFY环境变量设置为空字符串以外的任何值都等同于设置--tlsverify标志。以下是等效的:
$ docker --tlsverify ps
# or
$ export DOCKER_TLS_VERIFY=1
$ docker ps
Docker客户端将使用HTTP_PROXY,HTTPS_PROXY和NO_PROXY 环境变量(或其小写版本)。HTTPS_PROXY优先于HTTP_PROXY。
从Docker 18.09开始,Docker客户端支持通过SSH连接到远程守护程序:
$ docker -H ssh://me@example.com:22 ps
$ docker -H ssh://me@example.com ps
$ docker -H ssh://example.com ps
要使用SSH连接,您需要进行设置,ssh以便它可以通过公共密钥身份验证到达远程主机。不支持密码验证。如果您的密钥受密码保护,则需要设置 ssh-agent。