• 【Docker-k8s学习和实战】(六)docker镜像相关管理操作:增、删、改、查、维护


    ❤️ 专栏简介 :本专栏我们会从最基础的内容开始学习Docker的相关内容,循序渐进的掌握Docker知识并进行实战。

    ☀️ 专栏适用人群 :适用于具备基础 Linux 知识的 Docker 初学者,当然希望各位有经验的docker开发者不吝赐教。

    🌙专栏特点:通俗易懂、图文并茂、非常详细;

    🌴 专栏说明 :如果文章知识点有错误的地方,欢迎大家随时在文章下面评论,我会第一时间改正。让我们一起学习,一起进步。

    🍄 专栏地址:https://blog.csdn.net/anchenliang_1002/category_11878561.html

    在这里插入图片描述

    本节主要介绍了docker镜像的增删改查相关操作,包括获取镜像查看镜像删除镜像以及镜像的综合管理等。

    一、获取镜像(docker pull)

    当然获取镜像的方法有很多种:

    1、从dockerhub获取镜像
    2、本地镜像导出、导入
    3、私有的docker仓库

    本节我们主要讲第一种方式:从dockerhub获取镜像。

    通过前面的知识我们也大概知道了,获取镜像我们一般从镜像仓库获取;默认的docker仓库是dockerhub,dockerhub上有大量的优质镜像,当然也有很多用户上传的镜像;当我们学习完docker之后,也可以上传自己的镜像到dockerhub中,比如,我们可以下载一个centos镜像,然后用该镜像运行出一个容器,并在容器中按照了vim nginx等软件;最后提交镜像,上传到dockerhub上,其他小伙伴就可以下载使用咱们上传的镜像了。

    1.1 获取镜像

    获取镜像的命令:

    #查找镜像,tag为具体的标签版本
    docker search 镜像名:tag
    
    #下载镜像
    # 方式1 不带tag
    docker pull centos  #如果centos后面不加tag,那就默认是centos:latest,即默认下载latest标签版本
    # 方式2 带tag
    docker pull centos:7.8.2003  # 下载7.8.2003标签版本的centos
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    例如获取centos镜像的过程如下:

    docker search centos
    
    • 1

    在这里插入图片描述
    然后下载centos镜像:

    docker pull centos
    
    • 1

    在这里插入图片描述
    可以看到,不加tag时,上面会提示下载的是默认tag,即latest。

    1.2 查看本地的镜像

    下载完成后,查看本地的docker镜像命令

    docker images 
    
    docker image ls
    #以上两条指令时等价的
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述
    就可以看到我们刚刚下载的centos:releast镜像了。

    1.3 镜像文件存储位置

    那这些镜像都放在哪些位置呢?

    docker info | grep Root
    
    • 1

    在这里插入图片描述
    可以看到Root存放在 /var/lib/docker下;

    咱们刚刚pull下来的docker镜像是放在/var/lib/docker/image/overlay2/imagedb/content/sha256下的,我们来查看一下:
    在这里插入图片描述
    可以看到/var/lib/docker/image/overlay2/imagedb/content/sha256下存放的就是镜像的文件,文件的命名是镜像id,它和我们docker images看到的镜像id是一一对应的。这些文件的作用的记录镜像和容器的配置关系;

    1.4 使用不同镜像,生成容器

    启动centos(latest)容器

    docker run -it --rm centos bash
    
    • 1

    指令参数解释:

    -it :开启一个交互式的终端
    --rm:容器退出时删除该容器
    bash:进入终端后开启bash命令
    
    • 1
    • 2
    • 3

    在这里插入图片描述
    可以看到我们进入了centos(latest)容器内部,且可以看到最新tag的centos是8.4.2105;

    使用exit可以退出容器:
    在这里插入图片描述

    启动centos7.8.2003容器

    在这里插入图片描述

    docker images可以看到我们宿主机里还有centos7.8.2003镜像,让我们用它来运行出容器;

    docker run -it --rm centos bash
    
    • 1

    在这里插入图片描述
    可以看到我们进入了centos(7.8.2003)容器内部;

    依旧是使用exit可以退出容器:
    在这里插入图片描述

    二、查看镜像

    2.1 查看本地的镜像

    查看本地都有哪些镜像

    docker images 
    
    docker image ls
    #以上两条指令时等价的
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    就可以看到我们本地都有哪些docker镜像了;第一列(REPOSITORY)是docker镜像的名称,第二列(TAG)是镜像的标签;第三列是镜像ID;第四列是镜像的创建时间(或上次修改的时间);最后一列是该镜像的大小;

    查看具体的镜像

    docker images +具体的镜像名
    
    • 1

    以上指令可以用来查看相关的镜像;比如
    在这里插入图片描述

    当然也可以具体到查看某一个tag的镜像:

    docker images +具体的镜像名:tag
    
    • 1

    在这里插入图片描述

    只查看镜像id

    # -q 是-quit的缩写
     docker images -q
    
    • 1
    • 2

    在这里插入图片描述

    格式化查看镜像

    使用docker的模板语言,格式化的查看镜像的某些信息。
    比如我们只想看某个镜像的仓库名称和它的id:

    docker images --format "{{.ID}}--{{.Repository}}"
    
    • 1

    在这里插入图片描述

    以表格形式显示

    docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"
    
    • 1

    在这里插入图片描述

    2.2 查看(搜索)dockerhub里的镜像

    比如搜索dockerhub里有没有centos镜像:

    docker search centos
    
    • 1

    在这里插入图片描述
    可以看到,有很多centos的镜像,其中第一个是官方版的。

    那有没有搜索不到的情况(即dockerhub 里没有该镜像):

    docker search adfsafdsafsda
    
    • 1

    在这里插入图片描述
    可以看到,啥也没有。

    三、删除镜像

    我们可以根据镜像的 id、名字、摘要等方式去删除镜像

    # 根据名字删除centos镜像
    docker rmi centos
    
    • 1
    • 2

    在这里插入图片描述
    可以看到是分层删除的。

    # 根据id删除centos镜像
    docker rmi 镜像id
    
    • 1
    • 2

    四、镜像的综合管理

    4.1 批量删除镜像

    #批量删除当前所有镜像(慎用)
    docker rmi `docker images -aq`
    
    • 1
    • 2

    4.2 导出镜像

     docker image save 所要导出的镜像 > 目录/导出后的镜像名称
     
     #例如导出centos7.8.2003镜像到/opt目录下并命名为centos7.8.2003-acl.tgz镜像
     
     docker image save centos:7.8.2003 > /opt/centos7.8.2003-acl.tgz
    
    • 1
    • 2
    • 3
    • 4
    • 5

    运行结果:
    在这里插入图片描述

    比如默认运行的centos镜像,不提供vim功能,我们可以运行该容器后,在容器内安装vim,然后提交该镜像;再导出该镜像为压缩文件,就可以发给其他人使用了。
    详细过程如下:

    [root@localhost acl]# docker run -it centos:7.8.2003 bash
    [root@7ce3ebdd0cd3 /]# yum install vim 
    。。。。。。。。。。省略安装过程
    [root@7ce3ebdd0cd3 /]# exit
    exit
    [root@localhost acl]# 
    [root@localhost acl]# 
    [root@localhost acl]# docker image save centos:7.8.2003 > /opt/centos7.8.2003-acl.tgz
    [root@localhost acl]# ls /opt/ -lh
    总用量 202M
    -rw-r--r--  1 root root 202M 6  29 22:31 centos7.8.2003-acl.tgz
    drwx--x--x  4 root root   28 6  24 19:33 containerd
    drwxr-xr-x. 3 root root   24 6  19 20:59 kingsoft
    drwxr-xr-x. 2 root root    6 10 31 2018 rh
    [root@localhost acl]# 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    4.3 导入镜像

    #导入镜像命令

    docker image load -i 镜像存放路径+名称
    
    #例如导入放在/opt目录下的centos7.8.2003-acl.tgz镜像
    docker image load -i /opt/centos7.8.2003-acl.tgz
    
    • 1
    • 2
    • 3
    • 4

    4.4 查看镜像详细信息

    #查看docker服务信息
    docker info 
    
    • 1
    • 2
    #查看镜像详细信息
    docker image inspect +镜像id
    
    例如:
    docker image inspect 605c77e624dd
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

  • 相关阅读:
    善用Google搜索,资源唾手可得
    Linux安装MySQL8.0并部署数据库教程
    GBase 8c V3.0.0数据类型——窗口函数
    Apache Doris 巨大飞跃:存算分离新架构
    一个开源轻量级的C#代码格式化工具(支持VS和VS Code)
    解决office2010每次打开出现配置进度的方法
    java爬虫
    数据仓库之核心模型与扩展模型分离
    淘宝扭蛋机小程序:探索未知的惊喜之旅
    基于机器学习的古代汉语自动分词标注算法及语料库研究
  • 原文地址:https://blog.csdn.net/AnChenliang_1002/article/details/125510958