互联网技术 / 互联网资讯 · 2023年11月9日 0

Docker守护进程socket选项技术教程

Docker守护进程Socket选项技术教程

Docker守护进程能够通过三种不同的Socket类型来监听Docker引擎API请求:unix、TCP和fd。默认情况下,unix Socket会在创建的域套接字(或IPC套接字)/var/run/docker.sock中运行,这需要Root权限或是docker组的成员身份。

如果您需要远程访问守护进程,则必须启用TCP Socket。需要注意的是,默认配置会提供对守护进程的未加密和未经身份验证的直接访问。因此,建议使用内置的HTTPS加密Socket,或者在其前面放置一个安全的Web代理以确保安全。可以通过IP地址2375在所有网络接口上进行监听,使用命令-H TCP://0.0.0.0:2375,或者在特定的网络接口上监听,使用命令-H TCP://192.168.59.103:2375。通常情况下,端口2375用于未加密通信,而端口2376则用于与守护进程的加密通信。

在使用HTTPS加密Socket时,请确保仅支持TLS 1.0及更高版本。出于安全考虑,SSLv3及以下协议已不再支持。

在基于systemd的系统中,您可以通过systemd socket激活与守护进程进行通信,使用命令dockerd -H fd://。使用fd://在大多数设置中都能正常工作,但您也可以指定单个Socket,例如:dockerd -H fd://3。如果找不到指定的Socket激活文件,Docker将会退出。您可以在Docker源代码树中找到将systemd socket激活与Docker和systemd一起使用的示例。

您可以使用多个-H选项配置守护进程,使其同时监听多个Socket:

$ sudo dockerd -H unix:///var/run/docker.sock -H TCP://192.168.59.106 -H TCP://10.10.10.2

客户端将使用DOCKER_HOST环境变量来设置标志。可以使用下面的命令:

$ 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

# 或

$ export DOCKER_TLS_VERIFY=1

$ docker ps

客户端将使用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。

[[[IMG_1]]]
[[[IMG_2]]]
[[[IMG_3]]]