Docker 开启外部 HTTP 访问

March 5, 2023 · 137 words · One minute

Docker 开启外部 HTTP 访问

在监控容器时,通常需要从 Docker 中获取容器的信息,如果监控服务和其他的服务在同一台宿主机上,通常可以直接通过挂载 socket 的方式进行获取;但是为了监控的准确性,通常会将监控服务和其他服务分开部署,因此需要从外部获取 Docker 容器信息;

Docker 除了支持 socket 方式之外,还支持通过 HTTP 的方式获取容器的信息

开启 HTTP 访问

HTTP 访问是通过在启动 Docker 服务的时候添加参数的方式开启的;需要在 docker service 的启动命令中添加 -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock,即允许通过 HTTP 方式和 socket 方式访问

配置启动参数

该文件是 docker 服务的定义文件

vi /usr/lib/systemd/system/docker.service

在 Service 的 ExecStart 命令中添加 -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutStartSec=0
RestartSec=2
Restart=always

重启 Docker 服务

systemctl daemon-reload
systemctl restart docker

检查端口

通过 telnet 命令检查 2375 端口,可以访问说明端口正常

telnet localhost 2375
Trying ::1...
Connected to localhost.
Escape character is '^]'.

开启防火墙

在外部访问时还需要开启防火墙,将 2375 端口添加到放行名单中即可;添加后在外部通过 telnet 检查也可以访问说明配置成功了

firewall-cmd --zone=public --add-port=2375/tcp --permanent