docker info 命令讲解

docker info 命令用于显示有关 Docker 系统的详细信息,包括 Docker 配置、版本、容器运行状况、存储驱动、网络设置等。它提供了一个全面的概览,有助于用户了解当前 Docker 环境的状态。下面是对 docker info 输出中的各个字段的解释。

docker info 命令输出的常见字段及其解释:

  1. Containers

    • Running: 当前正在运行的容器数量。
    • Paused: 当前暂停的容器数量。
    • Stopped: 当前停止的容器数量。

    这些字段展示了系统上容器的状态和数量。

  2. Images

    • 显示本地镜像的数量。
  3. Server Version

    • 显示当前 Docker 引擎的版本。
  4. Storage Driver

    • 显示 Docker 使用的存储驱动。常见的存储驱动包括 overlay2aufsbtrfszfs 等。存储驱动决定了容器的文件系统如何在主机和容器之间共享和隔离。
  5. Logging Driver

    • Docker 使用的日志记录驱动,通常是 json-file 或 syslog
  6. Cgroup Driver

    • 当前使用的 cgroup 驱动程序(如 cgroupfs 或 systemd)。
    • Cgroup Driver: cgroupfs 表示 Docker 使用 cgroupfs 来管理 cgroup 资源。
  7. Plugins

    • Volume Plugins: 显示可用的卷插件。
    • Network Plugins: 显示可用的网络插件。
    • Authorization Plugins: 显示可用的授权插件。
  8. Swarm

    • 显示 Docker Swarm 集群的状态。包括是否启用了 Swarm 模式,以及当前集群中的节点数量。
  9. Runtimes

    • 列出 Docker 支持的运行时。常见的运行时包括 runc(默认的容器运行时)和其他可能安装的容器运行时。
  10. Default Runtime

    • Docker 默认使用的容器运行时。
  11. Kernel Version

    • 主机操作系统的内核版本。
  12. Operating System

    • Docker 主机运行的操作系统及其版本信息。
  13. OSType

    • Docker 主机的操作系统类型,如 linux 或 windows
  14. Architecture

    • 显示主机的架构类型,例如 x86_64 或 arm64
  15. CPUs

    • 显示 Docker 主机上可用的 CPU 核心数量。
  16. Total Memory

    • 显示主机上的总内存大小。
  17. Name

    • Docker 主机的名称。
  18. ID

    • Docker 主机的唯一标识符。
  19. Docker Root Dir

    • Docker 的根目录,包含 Docker 数据和配置文件。
  20. Debug Mode

    • 是否启用了调试模式。启用时,会显示更多的调试信息。
  21. Registry

    • 当前使用的 Docker 注册表。默认是 Docker Hub。
  22. Insecure Registries

    • 如果有任何不安全的 Docker 注册表地址,会显示在此列表中。
  23. Live Restore Enabled

    • 是否启用了 Docker 守护进程的“实时恢复”功能,这意味着 Docker 在守护进程重启时可以继续运行容器。
  24. HTTP ProxyHTTPS Proxy

    • 如果 Docker 配置了 HTTP 或 HTTPS 代理,这些字段会显示代理的地址。
  25. 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 这两个驱动的区别:

cgroupfssystemd 是两种不同的 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 的环境,或者对于资源管理要求不高的场景。

 

你可能感兴趣的:(docker,docker,容器)