Docker引擎架构Docker引擎是用来运行和管理容器的核心软件其现代架构由四部分主要组件构成Docker Client、Dockerd、Containerd 与 Runc。Docker ClientDocker 客户端Docker 引擎提供的CLI工具用于用户向Docker 提交命令请求。DockerdDockerd 即 Docker Daemon 主要包含的功能有镜像构建、镜像管理、REST API、核心网络及编排等。其通过gRPC 与Containerd 进行通信。ContainerdContainerd 即 Container Daemon 主要功能是管理容器的声明周期。其本身不会创建容器而是调用Runc 来创建容器。RuncRuncRun Container只有一个作用创建容器。其本质是一个独立的容器运行时CLI工具。其在fork出一个容器子进程后启动该容器进程。容器进程启动完毕后Runc会自动退出。ShimShim垫片是实现“Daemonless Container 无Docker Daemon 与 Container Daemon容器”不可或缺的工具使容器与Docker Daemon解耦使得Docker Daemon的维护与升级不会影响运行中的容器。每次创建容器Containerd 会fork 出Shim进程由Shim进程fork出Runc进程。当Runc退出之前会先将新容器进程的父进程指定为相应的Shim进程。除了作为容器的父进程外Shim进程还具有两个重要的功能保持所有STDIN与STDOUT 流的开启状态从而使当Docker Daemon重启时容器不会因为Pipe 的关闭而终止。将容器的退出状态反馈给Docker Daemon。Docker 引擎分类Docker 分为三类Moby、社区版Docker -CE 和企业版Docker -EE。Docker引擎安装下面以Docker 在CentOS7中的安装为例。安装需要的包yum install -y yum-utils添加docker 下载仓库将国外仓库地址替换yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo安装dockeryum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin启动dockersystemctl start docker启动成功测试docker versiondocker重启systemctl restart docker查看docker 状态systemctl status docker开机自启动Dockersystemctl enable docker停止dockersystemctl stop docker关闭开机启动systemctl disable docker配置国内阿里云加速器1.找到对应页面cr.console.aliyun.com,然后登录进去。然后打开容器镜像服务页面如果上面的源拉取不下sh mkdir -p /etc/docker3.修改daemon.jsonsh tee /etc/docker/daemon.json -EOF { registry-mirrors: [https://v2xxxxxxx03t.mirror.aliyuncs.com] } EOF4.重新加载服务配置文件systemctl daemon-reload5.重启dockersystemctl restart dockerDocker引擎卸载移除yumyum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extrasrm两个目录这两个目录存放在镜像、容器、数据卷需要手动删除。rm -rf /var/lib/docker rm -rf /var/lib/containerdDocker镜像镜像是一种轻量级、可执行的独立软件包也可以说是一个精简的操作系统。镜像中包含应用软件及其运行环境。镜像包含某个软件所需的所有内容包括代码、库、环境变量和配置文件等。几乎所有应用直接打包为Docker 镜像后就可以运行。镜像运行时就称为了容器容器设计的非常小巧所以镜像也比较小镜像不包含内核其共享宿主机的内核镜像中只包含简单的Shell或没有shell。镜像仓库分类根据镜像发布者的不同分成四类不同的镜像仓库Docker Official ImageDocker官方镜像仓库。此类仓库中的镜像由Docker官方构建发布代码指令高且安全有完善的文档。一般常用的系统、工具软件、中间件都有对应的官方镜像仓库如Zookeeper\Redis\Nginx等。官方镜像仓库的名称repository一般直接为该类软件的名称software-nameVeriffied Publisher: 已验证发布者仓库。此类仓库中的镜像由非Docker官方的第三方发布。该第三方由Docker 公司认证通过一般为大型企业或组织。Docker 公司会向其办法“VERIFIED PUBLISHER” 标识。这种仓库中镜像的质量有保证。除了官方镜像仓库其他都是非官方镜像仓库。非官方镜像仓库名称repository一般由发布者用户名与软件名称两部分构成形式为username/software-nameSponsored OSS: 由Docker公司赞助开发的镜像仓库。这种仓库中的镜像质量也是有保证的。无认证仓库没有以上任何标识的仓库。这种仓库中镜像质量无法保证使用时需谨慎。第三方镜像中心镜像中心默认是官方的Docker Hub。但是镜像中心可以配置为指定的第三方镜像中心。第三方镜像中心的仓库名称repository由三部分组成:domain-name/username/software-name。其中domain-name指第三方镜像中心的域名或IP。镜像定位对于任何镜像可通过repository:tag进行唯一定位。tag是镜像版本号。tag如果不指定默认为latest最新版。镜像相关命令# 将镜像从docker hub拉取到本地。 docker pull # 简化日志输出简化拉取过程中的日志输出。 docker pull -q redis # 通过digest拉取.语法格式为docker pull repositorydigest. #digest 是镜像内容的一个hash值只要镜像内容发生改变其hash值也会改变。 # digest 是包含前面的sha256的表示采用的Hash算法是sha256. docker pull zookeepersha256:dnasdhawer32kfsi4598jfur32904490 # 查看本地所有镜像资源信息。这些镜像会按照创建时间由近及远排序。 docker images # 查看指定镜像 docker images zookeeper # 查看镜像完整id,docker images显示的id是截取后的结果使用--no-trunc参数显示的是完整的镜像id docker images --no-trunc # 查看镜像digest docker images --digest docker images busybox --digest # 仅显示镜像id docker images -q # 过滤镜像使用-f 选项 # danglingtrue 用于过滤出悬虚镜像即没有Repository与tag的镜像。 # 悬虚镜像的Repository与tag 显示的是none docker images -f danglingtrue # -f before 用于列举出指定镜像创建时间之前的所有镜像 docker images -f beforeregistry # -f since 用于列举出指定镜像创建时间之后的所有镜像 docker images -f sinceregistry # -f reference 用于列举出与表达式相匹配的镜像 docker images -f referencecentos:* docker images -f reference*:latest # 格式化显示 docker images --format {{.Repostiory}}:{{.Tag}}:{{.Size}}
Docker--Docker引擎与镜像相关命令
发布时间:2026/6/29 23:18:09
Docker引擎架构Docker引擎是用来运行和管理容器的核心软件其现代架构由四部分主要组件构成Docker Client、Dockerd、Containerd 与 Runc。Docker ClientDocker 客户端Docker 引擎提供的CLI工具用于用户向Docker 提交命令请求。DockerdDockerd 即 Docker Daemon 主要包含的功能有镜像构建、镜像管理、REST API、核心网络及编排等。其通过gRPC 与Containerd 进行通信。ContainerdContainerd 即 Container Daemon 主要功能是管理容器的声明周期。其本身不会创建容器而是调用Runc 来创建容器。RuncRuncRun Container只有一个作用创建容器。其本质是一个独立的容器运行时CLI工具。其在fork出一个容器子进程后启动该容器进程。容器进程启动完毕后Runc会自动退出。ShimShim垫片是实现“Daemonless Container 无Docker Daemon 与 Container Daemon容器”不可或缺的工具使容器与Docker Daemon解耦使得Docker Daemon的维护与升级不会影响运行中的容器。每次创建容器Containerd 会fork 出Shim进程由Shim进程fork出Runc进程。当Runc退出之前会先将新容器进程的父进程指定为相应的Shim进程。除了作为容器的父进程外Shim进程还具有两个重要的功能保持所有STDIN与STDOUT 流的开启状态从而使当Docker Daemon重启时容器不会因为Pipe 的关闭而终止。将容器的退出状态反馈给Docker Daemon。Docker 引擎分类Docker 分为三类Moby、社区版Docker -CE 和企业版Docker -EE。Docker引擎安装下面以Docker 在CentOS7中的安装为例。安装需要的包yum install -y yum-utils添加docker 下载仓库将国外仓库地址替换yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo安装dockeryum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin启动dockersystemctl start docker启动成功测试docker versiondocker重启systemctl restart docker查看docker 状态systemctl status docker开机自启动Dockersystemctl enable docker停止dockersystemctl stop docker关闭开机启动systemctl disable docker配置国内阿里云加速器1.找到对应页面cr.console.aliyun.com,然后登录进去。然后打开容器镜像服务页面如果上面的源拉取不下sh mkdir -p /etc/docker3.修改daemon.jsonsh tee /etc/docker/daemon.json -EOF { registry-mirrors: [https://v2xxxxxxx03t.mirror.aliyuncs.com] } EOF4.重新加载服务配置文件systemctl daemon-reload5.重启dockersystemctl restart dockerDocker引擎卸载移除yumyum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extrasrm两个目录这两个目录存放在镜像、容器、数据卷需要手动删除。rm -rf /var/lib/docker rm -rf /var/lib/containerdDocker镜像镜像是一种轻量级、可执行的独立软件包也可以说是一个精简的操作系统。镜像中包含应用软件及其运行环境。镜像包含某个软件所需的所有内容包括代码、库、环境变量和配置文件等。几乎所有应用直接打包为Docker 镜像后就可以运行。镜像运行时就称为了容器容器设计的非常小巧所以镜像也比较小镜像不包含内核其共享宿主机的内核镜像中只包含简单的Shell或没有shell。镜像仓库分类根据镜像发布者的不同分成四类不同的镜像仓库Docker Official ImageDocker官方镜像仓库。此类仓库中的镜像由Docker官方构建发布代码指令高且安全有完善的文档。一般常用的系统、工具软件、中间件都有对应的官方镜像仓库如Zookeeper\Redis\Nginx等。官方镜像仓库的名称repository一般直接为该类软件的名称software-nameVeriffied Publisher: 已验证发布者仓库。此类仓库中的镜像由非Docker官方的第三方发布。该第三方由Docker 公司认证通过一般为大型企业或组织。Docker 公司会向其办法“VERIFIED PUBLISHER” 标识。这种仓库中镜像的质量有保证。除了官方镜像仓库其他都是非官方镜像仓库。非官方镜像仓库名称repository一般由发布者用户名与软件名称两部分构成形式为username/software-nameSponsored OSS: 由Docker公司赞助开发的镜像仓库。这种仓库中的镜像质量也是有保证的。无认证仓库没有以上任何标识的仓库。这种仓库中镜像质量无法保证使用时需谨慎。第三方镜像中心镜像中心默认是官方的Docker Hub。但是镜像中心可以配置为指定的第三方镜像中心。第三方镜像中心的仓库名称repository由三部分组成:domain-name/username/software-name。其中domain-name指第三方镜像中心的域名或IP。镜像定位对于任何镜像可通过repository:tag进行唯一定位。tag是镜像版本号。tag如果不指定默认为latest最新版。镜像相关命令# 将镜像从docker hub拉取到本地。 docker pull # 简化日志输出简化拉取过程中的日志输出。 docker pull -q redis # 通过digest拉取.语法格式为docker pull repositorydigest. #digest 是镜像内容的一个hash值只要镜像内容发生改变其hash值也会改变。 # digest 是包含前面的sha256的表示采用的Hash算法是sha256. docker pull zookeepersha256:dnasdhawer32kfsi4598jfur32904490 # 查看本地所有镜像资源信息。这些镜像会按照创建时间由近及远排序。 docker images # 查看指定镜像 docker images zookeeper # 查看镜像完整id,docker images显示的id是截取后的结果使用--no-trunc参数显示的是完整的镜像id docker images --no-trunc # 查看镜像digest docker images --digest docker images busybox --digest # 仅显示镜像id docker images -q # 过滤镜像使用-f 选项 # danglingtrue 用于过滤出悬虚镜像即没有Repository与tag的镜像。 # 悬虚镜像的Repository与tag 显示的是none docker images -f danglingtrue # -f before 用于列举出指定镜像创建时间之前的所有镜像 docker images -f beforeregistry # -f since 用于列举出指定镜像创建时间之后的所有镜像 docker images -f sinceregistry # -f reference 用于列举出与表达式相匹配的镜像 docker images -f referencecentos:* docker images -f reference*:latest # 格式化显示 docker images --format {{.Repostiory}}:{{.Tag}}:{{.Size}}