首页 > 基础资料 博客日记
Docker--Docker引擎与镜像相关命令
2026-05-27 10:00:04基础资料围观9次
Docker引擎
Docker引擎架构
Docker引擎是用来运行和管理容器的核心软件,其现代架构由四部分主要组件构成:
Docker Client、Dockerd、Containerd 与 Runc。

Docker Client
Docker 客户端,Docker 引擎提供的CLI工具,用于用户向Docker 提交命令请求。
Dockerd
Dockerd 即 Docker Daemon, 主要包含的功能有镜像构建、镜像管理、REST API、核心网络及编排等。其通过gRPC 与Containerd 进行通信。
Containerd
Containerd 即 Container Daemon, 主要功能是管理容器的声明周期。其本身不会创建容器,而是调用Runc 来创建容器。
Runc
Runc,Run Container,只有一个作用:创建容器。其本质是一个独立的容器运行时CLI工具。其在fork出一个容器子进程后启动该容器进程。容器进程启动完毕后,Runc会自动退出。
Shim
Shim(垫片)是实现“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 下载仓库
将国外仓库地址替换为国内仓库地址:http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -
安装docker
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -
启动docker
systemctl start docker -
启动成功测试
docker version -
docker重启
systemctl restart docker -
查看docker 状态
systemctl status docker -
开机自启动Docker
systemctl enable docker -
停止docker
systemctl stop docker -
关闭开机启动
systemctl disable docker -
配置国内阿里云加速器
1.找到对应页面cr.console.aliyun.com,然后登录进去。然后打开容器镜像服务页面

如果上面的源拉取不下来可以试试这个:
{ "registry-mirrors": [ "https://docker.211678.top", "https://docker.1panel.live", "https://hub.rat.dev", "https://docker.m.daocloud.io", "https://do.nark.eu.org", "https://dockerpull.com", "https://dockerproxy.cn", "https://docker.awsl9527.cn" ] }
2.创建docker目录
sh mkdir -p /etc/docker
3.修改daemon.json
sh tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://v2xxxxxxx03t.mirror.aliyuncs.com"] } EOF
4.重新加载服务配置文件:systemctl daemon-reload
5.重启docker:systemctl restart docker
Docker引擎卸载
-
移除yum
yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras -
rm两个目录
这两个目录存放在镜像、容器、数据卷,需要手动删除。
rm -rf /var/lib/docker rm -rf /var/lib/containerd
Docker镜像
镜像是一种轻量级、可执行的独立软件包,也可以说是一个精简的操作系统。
镜像中包含应用软件及其运行环境。
镜像包含某个软件所需的所有内容,包括代码、库、环境变量和配置文件等。几乎所有应用,直接打包为Docker 镜像后就可以运行。
镜像运行时就称为了容器,容器设计的非常小巧,所以镜像也比较小,镜像不包含内核,其共享宿主机的内核;镜像中只包含简单的Shell,或没有shell。
镜像仓库分类
根据镜像发布者的不同,分成四类不同的镜像仓库
-
Docker Official Image :Docker官方镜像仓库。此类仓库中的镜像由Docker官方构建发布,代码指令高且安全,有完善的文档。一般常用的系统、工具软件、中间件都有对应的官方镜像仓库,如:Zookeeper\Redis\Nginx等。
官方镜像仓库的名称
<repository>一般直接为该类软件的名称<software-name> -
Veriffied Publisher : 已验证发布者仓库。此类仓库中的镜像由非Docker官方的第三方发布。该第三方由Docker 公司认证通过,一般为大型企业或组织。Docker 公司会向其办法“VERIFIED PUBLISHER” 标识。这种仓库中镜像的质量有保证。
除了官方镜像仓库,其他都是非官方镜像仓库。
非官方镜像仓库名称
<repository>一般由发布者用户名与软件名称两部分构成,形式为:<username>/<software-name> -
Sponsored 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 <repository>@<digest>.
#digest 是镜像内容的一个hash值,只要镜像内容发生改变,其hash值也会改变。
# digest 是包含前面的sha256的,表示采用的Hash算法是sha256.
docker pull zookeeper@sha256: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 选项
# dangling=true 用于过滤出悬虚镜像,即没有Repository与tag的镜像。
# 悬虚镜像的Repository与tag 显示的是<none>
docker images -f dangling=true
# -f before 用于列举出指定镜像创建时间之前的所有镜像
docker images -f before=registry
# -f since 用于列举出指定镜像创建时间之后的所有镜像
docker images -f since=registry
# -f reference 用于列举出与表达式相匹配的镜像
docker images -f reference=centos:*
docker images -f reference=*:latest
# 格式化显示
docker images --format {{.Repostiory}}:{{.Tag}}:{{.Size}}





# docker search 从docker hub 上查看指定名称的镜像。
docker search zookeeper

AUTOMATED表示当前镜像是否是“自动化镜像”。
什么是自动化镜像?
就是使用Docker Hub 连接一个包含Dockerfile文件(专门构建镜像用的文件)的GitHub仓库的源码托管平台,然后Docker Hub就会自动创建镜像。
这样构建出的镜像就是自动化镜像。只要Dockerfile发生变化,那么DockerHub就会构建出心得镜像。
# 过滤检查结果
docker search zookeeper --filter is-official=true
# 限制检索数量,只显示5条
docker search zookeeper --limit=5
#rmi 删除本地镜像,通过<repository>:<tag>指定,如果省略<tag>,则删除得是latest版本
docker rmi zookeeper
#rmi 可一次删除多个镜像,使用空格分隔
docker rmi zookeeper mysql
通过imageID删除镜像

# 强制删除镜像,对于已经运行得镜像是不能删除得,必须先停止,才能删除。不过也可以通过-f 强制进行删除。
docker rmi -f zookeeper
#删除所有镜像,如果不加-f ,则不会删除已运行得镜像
docker rmi -f $(docker images -q)
# 导出镜像,将一个或多个镜像到处为tar文件。例如将busybox和hello-world镜像到出到当前目录得my.tar文件中
docker save -o my.tar busybox:latest hello-world:latest
# 导入镜像,将一个tar文件导入并加载为一个或多个镜像
docker load -i my.tar
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:

