CentOS如何配置Docker守护进程以支持远程访问?

在现代的IT基础设施和DevOps实践中,容器化技术已成为标配,Docker作为其中的佼佼者,其管理效率至关重要,我们在服务器上直接使用Docker命令行进行管理,但在复杂的场景下,如CI/CD流水线、集中式管理平台或多服务器集群维护时,能够从一台客户端机器远程访问和控制另一台CentOS服务器上的Docker守护进程,会极大地提升工作效率,本文将详细介绍如何在CentOS系统上安全、正确地配置Docker的远程访问功能。

CentOS如何配置Docker守护进程以支持远程访问?

配置Docker守护进程以监听远程连接

实现远程访问的核心是让Docker守护进程监听一个网络端口,而不仅仅是本地的Unix套接字,以下是详细的配置步骤。

修改Docker守护进程配置

Docker的守护进程配置文件通常位于/etc/docker/daemon.json,如果该文件不存在,则需要手动创建,我们需要在此文件中添加hosts配置项,以指定Docker监听的地址和端口。

推荐的做法是同时保留本地Unix套接字和TCP网络套接字,这样既不会影响本地的docker命令使用,又能开启远程访问。

创建或编辑/etc/docker/daemon.json文件,添加以下内容:

{
  "hosts": [
    "fd://",
    "tcp://0.0.0.0:2375"
  ]
}

配置解析:

  • "fd://":这是一个与Systemd集成的特殊值,它使用Systemd传递的套接字激活功能,这是CentOS 7+及现代Linux发行版的推荐方式,确保本地CLI工具正常工作,如果此方式不兼容,也可以使用"unix:///var/run/docker.sock"。
  • "tcp://0.0.0.0:2375":这是开启远程访问的关键,它告诉Docker在所有网络接口(0.0.0)的2375端口上监听TCP连接。

覆盖Systemd的Docker服务配置

在CentOS上,Docker通常由Systemd管理,Systemd的默认服务文件可能会覆盖我们刚才在daemon.json中的设置,更稳健的方法是创建一个Systemd的覆盖配置文件。

执行以下命令,这会打开一个编辑器:

sudo systemctl edit docker.service

在打开的编辑器中,输入以下内容,为ExecStart命令添加TCP监听参数:

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375

说明:

  • 第一行ExecStart=清空了原有的启动参数。
  • 第二行ExecStart=...设置了新的启动参数,同时包含了Systemd的fd://和我们的TCP tcp://0.0.0.0:2375,这种方法优先级更高,且不会被系统更新覆盖。

保存并退出编辑器,Systemd会自动在/etc/systemd/system/docker.service.d/override.conf目录下创建覆盖文件。

CentOS如何配置Docker守护进程以支持远程访问?

重启Docker服务并配置防火墙

配置修改完成后,需要重新加载Systemd配置并重启Docker服务使其生效。

sudo systemctl daemon-reload
sudo systemctl restart docker

确保CentOS的防火墙允许2375端口的入站连接。

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

至此,服务器端的配置已全部完成,你可以使用以下命令验证Docker是否正在监听2375端口:

netstat -tulpn | grep 2375

从客户端连接远程Docker守护进程

你可以在任何能够访问到CentOS服务器IP地址的机器上,通过多种方式连接到远程Docker。

使用 -H 参数

在Docker命令后添加-H(或--host)参数,指定远程守护进程的地址。

docker -H tcp://<服务器IP地址>:2375 version
docker -H tcp://<服务器IP地址>:2375 ps

将<服务器IP地址>替换为你的CentOS服务器的实际IP。

设置 DOCKER_HOST 环境变量

为了避免每次都输入-H参数,可以设置一个环境变量,这种方式在脚本和持续集成中特别常用。

在Linux或macOS上:

CentOS如何配置Docker守护进程以支持远程访问?

export DOCKER_HOST="tcp://<服务器IP地址>:2375"
docker images
docker run ...

在Windows PowerShell上:

env:DOCKER_HOST="tcp://<服务器IP地址>:2375"
docker images

设置后,所有后续的Docker命令都将自动指向远程守护进程,要取消,只需将DOCKER_HOST变量置空(unset DOCKER_HOST)。

安全性考量与TLS加密

需要强调的是,上述配置(使用2375端口)是完全不加密、无认证的,这在开发或受信任的内网测试环境中或许可以接受,但在任何公开网络或生产环境中都是极其危险的,任何能够连接到该端口的人都可以获得对宿主机的完全控制权,等同于获取了root权限。

在生产环境中,必须使用TLS(传输层安全协议)对远程API连接进行加密和认证,TLS配置通常使用2376端口,它要求客户端和服务端都拥有由同一个证书颁发机构(CA)签发的证书,配置过程相对复杂,涉及生成CA私钥、服务器证书、客户端证书等,开启TLS后,daemon.json和客户端连接命令都会变得更加复杂,但安全性得到了根本保障。

配置方法对比

为了更清晰地理解不同配置方案的差异,下表小编总结了非加密和TLS加密两种方式的特点。

配置项 非加密方式 (端口2375) TLS加密方式 (端口2376)
安全性 极低,明文传输,无认证 高,双向加密与认证
适用场景 临时调试、开发环境、完全隔离的可信内网 生产环境、公网访问、任何对安全有要求的场景
配置复杂度 简单,仅需修改配置文件 复杂,需要创建和管理多套证书
推荐度 不推荐用于任何严肃环境 强烈推荐用于所有远程访问场景

相关问答FAQs

我配置了远程访问后,在服务器本地上执行docker ps命令提示“Cannot connect to the Docker daemon”,这是怎么回事?
解答: 这个问题通常是由于在配置daemon.json或Systemd覆盖文件时,只添加了TCP监听地址(如tcp://0.0.0.0:2375),而移除或忘记了本地Unix套接字的监听地址(fd://或unix:///var/run/docker.sock),Docker客户端默认通过Unix套接字与守护进程通信,当这个通道被关闭后,本地命令自然就失败了,请确保你的hosts数组或ExecStart指令中同时包含了本地和远程两种监听方式。

为什么强烈不建议在生产环境中使用2375端口?
解答: 使用2375端口开启的远程访问是“裸奔”模式,它既没有加密也没有身份验证,这意味着网络中的任何用户(甚至在某些情况下,是互联网上的任何用户)只要能发现这个端口,就可以无需密码直接连接到你的Docker守护进程,一旦连接成功,他们就可以执行任意Docker命令,例如挂载宿主机根目录到容器中,从而轻易地获得服务器的root权限,窃取数据、植入恶意软件,造成灾难性的后果,在生产环境中,必须采用TLS加密的2376端口或通过SSH隧道等更安全的方式进行远程访问。

【版权声明】:本站内容若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

赞 (0)
爱国的头像爱国
如何用云服务器搭建一个能24小时在线的qqbot?
上一篇 2025-10-08 22:22
房山制作网站怎么选,才能做出能带来客户的网站?
下一篇 2025-10-08 22:27

相关推荐

  • 如何让CentOS双网卡一张上外网一张通内网?

    在服务器管理领域,为了实现更高的安全性、性能和网络管理的清晰度,经常需要在一台服务器上配置多个网络接口卡(网卡),并将它们连接到不同的逻辑或物理网络,CentOS作为一款广泛使用的企业级Linux发行版,提供了强大而灵活的网络配置能力,使得双网卡乃至多网卡的隔离配置成为一项常规但至关重要的任务,本文将深入探讨在……

    2025-10-06
    0070
  • RedHat和CentOS版本之间有什么对应关系?

    Red Hat Enterprise Linux (RHEL) 和 CentOS 之间存在着一种深刻而直接的联系,理解它们之间的版本对应关系,对于系统管理员和开发者在选择、部署和维护服务器时至关重要,这种关系并非简单的竞争或模仿,而是一种基于开源协议的“上游”与“下游”的衍生模式,历史渊源与重建模式RHEL 是……

    2025-10-07
    0064
  • 硬件云化设备已就位,为何还需额外投入云管理服务?

    摘要:尽管已购买硬件云化设备,但仍需配置额外的服务器硬件以支持运行。购买云管理服务对于实现资源的有效管理、监控和维护是必要的,确保系统稳定高效运作。

    2024-07-29
    0025
  • 番禺网站建设系统_登录系统网站

    番禺网站建设系统提供一站式网站搭建服务,包括个性化设计、功能定制和后期维护。登录系统网站安全便捷,支持多种认证方式,保障用户信息安全。

    2024-07-14
    0033

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

广告合作

QQ:14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信