docker info
命令用于显示有关 Docker 系统的详细信息,包括 Docker 配置、版本、容器运行状况、存储驱动、网络设置等。它提供了一个全面的概览,有助于用户了解当前 Docker 环境的状态。下面是对 docker info
输出中的各个字段的解释。
docker info
命令输出的常见字段及其解释:
-
Containers
- Running: 当前正在运行的容器数量。
- Paused: 当前暂停的容器数量。
- Stopped: 当前停止的容器数量。
这些字段展示了系统上容器的状态和数量。
-
Images
- 显示本地镜像的数量。
-
Server Version
- 显示当前 Docker 引擎的版本。
-
Storage Driver
- 显示 Docker 使用的存储驱动。常见的存储驱动包括
overlay2
、aufs
、btrfs
、zfs
等。存储驱动决定了容器的文件系统如何在主机和容器之间共享和隔离。
- 显示 Docker 使用的存储驱动。常见的存储驱动包括
-
Logging Driver
- Docker 使用的日志记录驱动,通常是
json-file
或syslog
。
- Docker 使用的日志记录驱动,通常是
-
Cgroup Driver
- 当前使用的 cgroup 驱动程序(如
cgroupfs
或systemd
)。 - Cgroup Driver: cgroupfs 表示 Docker 使用
cgroupfs
来管理 cgroup 资源。
- 当前使用的 cgroup 驱动程序(如
-
Plugins
- Volume Plugins: 显示可用的卷插件。
- Network Plugins: 显示可用的网络插件。
- Authorization Plugins: 显示可用的授权插件。
-
Swarm
- 显示 Docker Swarm 集群的状态。包括是否启用了 Swarm 模式,以及当前集群中的节点数量。
-
Runtimes
- 列出 Docker 支持的运行时。常见的运行时包括
runc
(默认的容器运行时)和其他可能安装的容器运行时。
- 列出 Docker 支持的运行时。常见的运行时包括
-
Default Runtime
- Docker 默认使用的容器运行时。
-
Kernel Version
- 主机操作系统的内核版本。
-
Operating System
- Docker 主机运行的操作系统及其版本信息。
-
OSType
- Docker 主机的操作系统类型,如
linux
或windows
。
- Docker 主机的操作系统类型,如
-
Architecture
- 显示主机的架构类型,例如
x86_64
或arm64
。
- 显示主机的架构类型,例如
-
CPUs
- 显示 Docker 主机上可用的 CPU 核心数量。
-
Total Memory
- 显示主机上的总内存大小。
-
Name
- Docker 主机的名称。
-
ID
- Docker 主机的唯一标识符。
-
Docker Root Dir
- Docker 的根目录,包含 Docker 数据和配置文件。
-
Debug Mode
- 是否启用了调试模式。启用时,会显示更多的调试信息。
-
Registry
- 当前使用的 Docker 注册表。默认是 Docker Hub。
-
Insecure Registries
- 如果有任何不安全的 Docker 注册表地址,会显示在此列表中。
-
Live Restore Enabled
- 是否启用了 Docker 守护进程的“实时恢复”功能,这意味着 Docker 在守护进程重启时可以继续运行容器。
-
HTTP Proxy 和 HTTPS Proxy
- 如果 Docker 配置了 HTTP 或 HTTPS 代理,这些字段会显示代理的地址。
-
No Proxy
- 配置的代理排除列表。
示例输出及解释:
# docker info
Containers: 3
Running: 1
Paused: 0
Stopped: 2
Images: 12
Server Version: 20.10.7
Storage Driver: overlay2
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume Plugins: local
Network Plugins: bridge, host, macvlan, none
Swarm: active
Runtimes: runc
Default Runtime: runc
Kernel Version: 5.4.0-80-generic
Operating System: Ubuntu 20.04.2 LTS
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 16GiB
Name: dockerhost
ID: XXXXXX
Docker Root Dir: /var/lib/docker
Debug Mode: false
Registry: https://index.docker.io/v1/
Insecure Registries:
Live Restore Enabled: true
详细字段解释
- Containers: 显示系统中容器的状态。
- Images: 本地镜像数量。
- Server Version: Docker 的版本号。
- Storage Driver: 使用的存储驱动类型。
- Cgroup Driver: 这里是
cgroupfs
,表示 Docker 使用 cgroupfs 来管理资源。 - Plugins: 列出启用的插件(如存储、网络插件)。
- Swarm: 当前 Docker Swarm 的状态,显示是否处于活动状态。
- Runtimes: 可用的容器运行时,这里是
runc
。 - Kernel Version: 主机内核的版本。
- Operating System: Docker 主机的操作系统及其版本。
- CPUs: 主机上可用的 CPU 核心数。
- Total Memory: 主机的总内存。
- Docker Root Dir: Docker 存储和数据目录的位置。
- Registry: 当前配置的 Docker 镜像注册表地址。
- Live Restore Enabled: 是否启用了 Docker 守护进程重启时容器的持续运行。
cgroupfs systemd 这两个驱动的区别:
cgroupfs
和 systemd
是两种不同的 Cgroup 驱动,它们分别管理 Linux 系统中的控制组(Cgroups)资源。Cgroups 是一种 Linux 内核机制,用于将进程组织成层次结构,以便控制和限制资源的使用。Docker 在运行容器时,使用 Cgroup 驱动来管理容器的资源(如 CPU、内存等)。
1. cgroupfs 驱动
-
定义:
cgroupfs
是一种直接与 Linux 内核的 Cgroup 子系统进行交互的驱动,它通过挂载 Cgroup 文件系统(通常是/sys/fs/cgroup
)来管理容器的资源限制。 -
工作原理:
cgroupfs
直接使用内核的 Cgroup 文件系统进行资源管理。- 它通过直接与
/sys/fs/cgroup
目录下的不同控制组进行交互来管理容器的资源使用。 - 它不依赖于
systemd
,因此可以在不使用systemd
的系统上运行。
-
优点:
- 对于不使用
systemd
的系统(例如某些旧版或定制的 Linux 发行版),cgroupfs
是一个独立且可工作的选择。 - 配置相对简单,可以直接通过 Cgroup 文件系统来操作资源。
- 对于不使用
-
缺点:
cgroupfs
不依赖于系统初始化管理工具(如systemd
),在多种服务管理和资源管理的集成上可能稍显不足。
2. systemd 驱动
-
定义:
systemd
驱动使用systemd
作为 Cgroup 管理工具。systemd
是现代 Linux 系统的初始化系统和服务管理器,它提供了对 Cgroup 的更高层次的抽象和管理功能。 -
工作原理:
systemd
将 Cgroup 作为其管理服务的一部分,通过它来控制和分配资源。- 它通过管理
/sys/fs/cgroup/systemd
目录下的 Cgroup 资源,来控制系统中的各个进程和容器资源。 - 容器的资源限制(如 CPU、内存)由
systemd
进程及其子进程进行管理。
-
优点:
systemd
提供了与其他系统服务(如日志、资源管理、服务启动等)的紧密集成。它能更好地协调和管理系统中的各个服务和容器。- 它能够管理跨多个控制组的资源(例如,跨服务和容器的资源限制),并且与容器外的资源管理更加统一。
- 对于使用
systemd
的系统(如现代的 CentOS、Ubuntu、Debian 等),这种集成方式可以更好地与系统的资源管理机制协同工作。
-
缺点:
systemd
依赖于systemd
系统初始化工具,如果系统没有使用systemd
,那么systemd
驱动无法工作。- 配置相对复杂,因为它依赖于系统的
systemd
服务和资源管理。
总结对比
特性 | cgroupfs | systemd |
---|---|---|
管理工具 | 直接通过 Cgroup 文件系统进行管理 | 通过 systemd 管理容器和进程的资源 |
依赖性 | 无需依赖 systemd ,独立于 systemd | 依赖 systemd ,只能在支持 systemd 的系统上使用 |
适用系统 | 适用于不使用 systemd 的系统(如老旧的发行版) | 适用于现代使用 systemd 的系统(如最新的 Linux 发行版) |
集成性 | 更少的系统集成,资源管理相对简单 | 与系统服务管理集成,资源管理更加一致 |
优点 | 配置简单,适用于旧系统或没有 systemd 的环境 | 更强的资源管理能力,跨服务/容器资源限制 |
缺点 | 不如 systemd 集成系统的资源管理 | 依赖 systemd ,不能在不支持的系统上使用 |
总的来说,systemd
驱动在现代 Linux 系统中通常是首选,因为它提供了更好的集成性和资源管理功能。而 cgroupfs
驱动更适合一些不使用 systemd
的环境,或者对于资源管理要求不高的场景。