首页 > 基础资料 博客日记

Docker--Docker引擎与镜像相关命令

2026-05-27 10:00:04基础资料围观9

这篇文章介绍了Docker--Docker引擎与镜像相关命令,分享给大家做个参考,收藏极客资料网收获更多编程知识

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中的安装为例。

  1. 安装需要的包

    yum install -y yum-utils
    
  2. 添加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 
    
  3. 安装docker

    yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    
  4. 启动docker

    systemctl start docker
    
  5. 启动成功测试

    docker version
    
  6. docker重启

    systemctl restart docker
    
  7. 查看docker 状态

    systemctl status docker
    
  8. 开机自启动Docker

    systemctl enable docker
    
  9. 停止docker

    systemctl stop docker
    
  10. 关闭开机启动

    systemctl disable docker
    
  11. 配置国内阿里云加速器

    1.找到对应页面cr.console.aliyun.com,然后登录进去。然后打开容器镜像服务页面

无标2题

如果上面的源拉取不下来可以试试这个:

{ "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引擎卸载

  1. 移除yum

    yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
    
  2. rm两个目录

    这两个目录存放在镜像、容器、数据卷,需要手动删除。

    rm -rf /var/lib/docker
    rm -rf /var/lib/containerd
    

Docker镜像

镜像是一种轻量级、可执行的独立软件包,也可以说是一个精简的操作系统。

镜像中包含应用软件及其运行环境。

镜像包含某个软件所需的所有内容,包括代码、库、环境变量和配置文件等。几乎所有应用,直接打包为Docker 镜像后就可以运行。

镜像运行时就称为了容器,容器设计的非常小巧,所以镜像也比较小,镜像不包含内核,其共享宿主机的内核;镜像中只包含简单的Shell,或没有shell。

镜像仓库分类

根据镜像发布者的不同,分成四类不同的镜像仓库

  1. Docker Official Image :Docker官方镜像仓库。此类仓库中的镜像由Docker官方构建发布,代码指令高且安全,有完善的文档。一般常用的系统、工具软件、中间件都有对应的官方镜像仓库,如:Zookeeper\Redis\Nginx等。

    官方镜像仓库的名称<repository>一般直接为该类软件的名称<software-name>

  2. Veriffied Publisher : 已验证发布者仓库。此类仓库中的镜像由非Docker官方的第三方发布。该第三方由Docker 公司认证通过,一般为大型企业或组织。Docker 公司会向其办法“VERIFIED PUBLISHER” 标识。这种仓库中镜像的质量有保证。

    除了官方镜像仓库,其他都是非官方镜像仓库。

    非官方镜像仓库名称<repository>一般由发布者用户名与软件名称两部分构成,形式为:<username>/<software-name>

  3. Sponsored OSS: 由Docker公司赞助开发的镜像仓库。这种仓库中的镜像质量也是有保证的。

  4. 无认证仓库:没有以上任何标识的仓库。这种仓库中镜像质量无法保证,使用时需谨慎。

第三方镜像中心

镜像中心默认是官方的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}}

无标3题

无标44题

无标5题

无6标题

无7标题

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

无标8题

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删除镜像

无标9题

# 强制删除镜像,对于已经运行得镜像是不能删除得,必须先停止,才能删除。不过也可以通过-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

文章来源:https://www.cnblogs.com/alineverstop/p/20178124
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!

标签:

相关文章

本站推荐

标签云