整改

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

修改监听地址为本地127.0.0.1,不允许支持远程访问

ExecStart=/usr/bin/dockerd -H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock

说明

这两个命令都是启动 Docker 服务的命令,但是有一些区别。

第一个命令:

ExecStart=/usr/bin/dockerd -H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock
  • 使用两个监听地址,一个是 TCP 协议的 127.0.0.1:2375,一个是 Unix Socket 的 /var/run/docker.sock。
  • 这个命令会启动 Docker daemon,但是它不会启动容器运行时(containerd 或者 CRI-O)。

第二个命令:

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
  • 使用一个监听地址,fd://,它会监听来自 systemd 的文件描述符。
  • 使用 containerd 作为容器运行时。
  • 这个命令会启动 Docker daemon 和容器运行时。

fd:// 是一个特殊的监听地址,用于 Docker 中的某些网络插件(如systemd插件)。它是与 Systemd 服务管理器配合使用的一种机制。

在 Linux 系统中,Systemd 是一个广泛采用的初始化系统和服务管理器。它可以通过文件描述符(File Descriptor)传递信息和通信。

fd:// 地址用于指示 Docker 使用 Systemd 服务管理器传递文件描述符,以实现容器与宿主机之间的通信。

当 Docker 容器需要与宿主机上的 Systemd 进程通信时,可以通过使用 fd:// 地址来监听 Systemd 的文件描述符。这样,容器内的进程就可以通过这个文件描述符与 Systemd 进程进行通信,实现与宿主机上的 Systemd 进程的交互。

使用 fd:// 地址需要特定的网络插件和配置。通常情况下,这种配置是由 Docker 网络插件或容器运行时的配置来管理的。

需要注意的是,使用 fd:// 地址和 Systemd 插件需要特定的环境和配置,并且这种机制与 Docker 默认的网络配置和通信方式有所不同。因此,具体的使用和配置方法可能因系统和环境而异。如果你需要更详细的信息,建议参考相关的文档和配置指南,以确保正确配置和使用 fd:// 地址。

在 Docker 中,Systemd 插件是一种网络插件,用于集成 Docker 容器与宿主机上的 Systemd 服务管理器。它允许容器在启动时,通过 Systemd 机制来管理和监控系统服务。

当使用 Systemd 插件时,Docker 容器可以通过 Systemd 单元文件来定义和管理运行在容器内的服务。这些服务可以由 Systemd 进程监控,并根据定义的配置进行自动启动、停止和重启。

Systemd 插件提供了以下功能:

  1. 容器内服务管理:通过 Systemd 单元文件定义和管理容器内的服务。
  2. 自动启动和重启:容器内的服务可以由 Systemd 进程自动启动,并在发生故障或容器重启时自动重启。
  3. 日志管理:Systemd 插件可以将容器内的服务日志转发到宿主机上的 Systemd 日志系统,使得容器内的日志可以与宿主机的系统日志进行集中管理和分析。

使用 Systemd 插件可以使得容器中的服务管理更加灵活和集成化,能够充分利用 Systemd 在系统级别的服务管理和监控功能。

请注意,Systemd 插件的使用可能需要特定的配置和环境支持。具体的安装和配置步骤可能因 Docker 版本和操作系统而异。建议参考 Docker 和相关网络插件的文档,以获取更详细的信息和配置指南。

修改步骤

要修改Docker的监听地址为本地127.0.0.1,不允许支持远程访问,需要编辑docker.service文件:

  1. 打开终端,输入以下命令以编辑docker.service文件:
vi docker.service
  1. 输入密码确认,然后在编辑器中添加以下内容:
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock
  1. 保存并退出编辑器。

  2. 重新加载systemd配置:

sudo systemctl daemon-reload
  1. 重启Docker服务:
sudo systemctl restart docker.service

现在,Docker已经配置为仅允许本地访问。要使用Docker命令,需要在本地终端上运行它们。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐