用了这么多年Docker,殊不知你还有这么多弯弯绕!( 二 )

  • 一个 Repository 表示某类镜像的仓库,同一个 Repository 内的镜像用 Tag 来区分,一个 Registry 包含多个Repository , 一个 Repository 包含同类型的多个 Image,并存储着每一个容器镜像的具体信息;GraphDB是一个基于SQLite的小型图数据库,记录容器镜像之间的关系;
  • rootfs是Docker容器的根文件系统 , 它位于bootfs之上,表现为Docker容器的根目录 , 包含基本的文件和目录 。在Docker中,rootfs由内核挂载为“只读”模式 , 而后通过“联合挂载”技术额外挂载一个“可写”层;
  • 通过.NETworkdriver 完成Docker容器网络环境的配置,其中包括Docker启动时为Docker环境创建网桥等功能;
  • Docker Execdriver是Docker容器的执行驱动,负责创建容器运行命名空间,负责容器资源使用的统计与限制,负责容器内部进程的真正运行等;
  • Libcontainer是Docker的底层容器管理库,它提供了一组接口和函数,用于创建和管理容器 。Libcontainer直接与内核交互 , 负责容器的命名空间、cgroup、网络设备等底层操作;
  • Docker Container是Docker中的容器实例,它是通过Driver和Libcontainer共同协作创建出来的 。Driver提供了容器的运行环境定制,而Libcontainer则负责容器的具体创建和管理操作 。Docker Container是Docker架构中服务交付的最终体现形式 。实现“一次构建 , 到处运行”的目标,大大提高了应用程序的部署效率和可移植性 。
  • 1、Docker Client 客户端Docker Client是Docker的客户端工具 , 也被称为Docker命令行界面(CLI) 。它是用户与Docker平台进行交互的主要方式 。
    Docker Client 的主要作用如下:
    • 用户交互界面:Docker Client提供了用户友好的命令行交互界面,用户可以通过输入命令来执行各种Docker操作,例如创建容器、启动容器、停止容器、构建镜像等 。
    • 容器管理:通过Docker Client,用户可以方便地管理Docker容器 。可以创建新的容器、启动、停止、重启容器,并且还可以查看容器的日志、状态等信息 。
    • 镜像管理:Docker Client也允许用户管理Docker镜像 。用户可以搜索、下载、构建、删除镜像等操作 , 以满足应用程序部署的需求 。
    • 资源配置:用户可以通过Docker Client配置容器的运行资源,例如CPU、内存等 。这样可以确保容器在运行时具有合适的资源配置 。
    • 网络通信:Docker Client可以与Docker Daemon进行通信,发送请求并接收响应 。它使用REST API或其他通信协议与Docker Daemon进行交互,从而实现对Docker容器的远程管理 。
    Docker Client是用户与Docker平台进行交互的重要工具 。它提供了命令行界面,让用户能够方便地管理Docker容器和镜像,并进行资源配置和网络通信等操作 。
    2、Docker Daemon 守护进程Docker Daemon是Docker的守护进程,它是Docker平台的后台服务组件,充当服务器角色 。
    Docker Daemon 的主要作用如下:
    • 容器管理:Docker Daemon负责创建、启动、停止、删除和管理Docker容器 。它接收来自Docker客户端的请求,并根据请求执行相应的容器管理操作 。
    • 镜像管理:Docker Daemon也管理Docker镜像 。它可以下载、上传、构建和删除镜像,并管理镜像的版本控制和安全性 。
    • 网络资源管理:Docker Daemon负责创建和管理Docker容器的网络环境 。它配置和管理容器的网络设置,确保容器之间的通信和互相访问 。
    • 数据卷管理:Docker Daemon还管理容器的数据卷,用于持久化存储容器中的数据,保证数据的可靠性和持久性 。
    Docker Daemon是Docker平台的核心组件,提供容器、镜像、网络和数据卷的管理功能 。它扮演着守护进程的角色 , 确保Docker平台的正常运行和管理 。
    3、镜像(Image)在Docker镜像中,Distribution、Layer、Image、Registry和Reference各自扮演了重要角色 。