zoukankan      html  css  js  c++  java
  • 三、镜像管理

    于2021年9月27日重新编辑

    一、镜像查询

    1.1 查看本地镜像

    docker images #或者
    docker image ls
    
    #查看所有镜像
    docker images -a #或者
    docker images -all
    

    1.2 搜索镜像

    docker search centos
    

    1.3 搜索时列出tag

    vim docker-show-tag.sh
    #!/bin/sh
    #
    # Simple script that will display docker repository tags.
    #
    # Usage:
    #   $ docker-show-repo-tags.sh ubuntu centos
    for Repo in $* ; do
      curl -s -S "https://registry.hub.docker.com/v2/repositories/library/$Repo/tags/" | 
        sed -e 's/,/,
    /g' -e 's/[/[
    /g' | 
        grep '"name"' | 
        awk -F" '{print $4;}' | 
        sort -fu | 
        sed -e "s/^/${Repo}:/"
    done
    
    chmod +x docker-show-tag.sh
    
    ./docker-show-tag.sh centos
    

    效果如下

    image-20210927144618364

    参考来自:show_tag

    1.4 列出镜像数字摘要值

    列出容器的sha256值,用于验证是否完整

    docker images --digests #或者
    docker images --digests=true
    

    image-20210927142003307

    1.5 仅输出ID信息

    只显示镜像的id

    docker images -q #或者
    docker images -q=true
    

    image-20210927145916096

    1.6 查看镜像详细信息

    包括制作者,适应架构,各层数字摘要等

    docker inspect centos
    

    image-20210927154314307

    1.7 查看镜像历史信息

    此命令可以列出各层的创建信息

    docker history centos
    

    image-20210927151433827

    1.8 镜像过滤

    --filter表示过滤,可简写为-f

    搜索所有收藏数大于等于4的tensorflow镜像

    docker search -f=stars=4 tensorflow #等同于
    docker search --filter=stars=4 tensorflow
    

    搜索官方提供的nginx镜像

    docker search --filter=is-official=true nginx
    

    二、镜像下载

    1)下载centos镜像

    docker pull centos #或者
    docker image pull centos
    
    #7.9.2009就是标签,用于标识镜像版本信息
    docker pull centos:7.9.2009 
    

    注意不指定TAG标签默认为latest标签,此时就会下载最新镜像,镜像内容会随着最新版本变更而变化,生产环境中需要指定标签。

    三、镜像使用

    3.1 添加标签

    tag命令给镜像添加标签,标签一般用来标识该镜像的版本信息

    docker tag ubuntu:18.04 myubuntu:latest
    

    效果如下

    image-20210927151028482

    注意

    镜像才有标签,容器只有名字跟id,没有标签。
    标签可以随意添加修改,同一个镜像可以有不同的标签,如上述centos就有v8跟latest标签,但本质上都是同一个镜像,因为镜像是使用ID来区分的,他们的ID是一样的。

    3.2 创建镜像

    1)基于已有容器创建镜像

    #查看容器ID,根据ID创建镜像
    docker ps –a
    docker commit a925cb40b3f0 test:0.1
    
    #给创建的镜像添加一些信息
    docker commit -m "Added a new file" -a "tz" a925cb40b3f0 test:0.1
    
    :'
    commit:提交镜像
    -m:提交消息,相当于备注
    -a:作者信息
    a925cb40b3f0:容器ID
    test:0.1:镜像名字
    '
    

    2)基于Dockerfile创建镜像

    Dockerfile是一个文本文件,里面有一些执行命令,相当于shell脚本。

    后续会介绍Dockerfile,这里了解即可。

    3.3 导出镜像

    1)使用export导出,导出tar包大小比save小

    #将名为c1的容器打包
    docker export -o centos-httpd.tar c1
    
    #将打包的容器导入为镜像
    docker import centos-httpd.tar centos-httpd:v1
    

    2)使用save导出

    #导出ubuntu镜像
    docker save -o ubuntu_18.04.tar ubuntu:18.04
    du –sh ubuntu_18.04.tar
    scp centos.tar 10.154.0.111:/root
    
    #导入镜像
    docker load -i ubuntu_18.04.tar #或者
    docker load < ubuntu_18.04.tar
    

    两者的区别

    我们先了解一下容器,容器是通过镜像启动的,我们知道镜像是只读不可写的,我们对容器执行一个命令就会增加一层读写层,长期使用容器就会有很多层。

    export导出只会导出容器最终的样子,不能保留每一层layer信息,就无法进行回滚操作;

    save导出的文件可以完整保留下每一层layer信息,可以进行回滚操作,就是tar包要大一点;

    建议

    若是想备份所有读写层,可以回滚到任何操作的层,使用save
    若是在启动容器后,容器内容有变化,需要备份,则使用export

    参考来自:区别实验证明二者区别

    3.4 上传镜像

    Docker Hub网站上注册后就能上传自制镜像。

    #先给镜像改个标签
    docker tag ubuntu:latest tz/ubuntu:latest
    #上传镜像
    docker push tz/ubuntu:latest
    

    具体可参考:上传镜像其他资料

    四、删除镜像

    4.1 普通删除

    删除镜像要先删除容器,比较保险。

    #删除容器
    docker ps -a
    docker rm c1
    docker rm 333dce61a32d #简写为
    docker rm 3
    
    #删除镜像
    docker rmi centos
    

    4.2 强制删除

    无需先删除容器

    docker rmi -f ubuntu:18.04
    

    4.3 删除全部

    docker rmi $(docker images -q)
    docker rmi -f $(docker images -q)
    

    4.4 清理镜像文件层

    清理临时的遗留镜像文件层

    docker image prune -f
    

    五、参考资料

    《Docker技术入门与实践》第三版

    狂神说docker

    今天的学习是为了以后的工作更加的轻松!
  • 相关阅读:
    string数组批量转换成Int数组
    TCP/IP 、 HTTP 、HTTPS
    静态布局、自适应布局、流式布局、响应式布局、弹性布局等的概念和区别
    Vue源码学习02 初始化模块init.js
    IOS8白屏
    VUE 源码学习01 源码入口
    http状态码
    vue全家桶(Vue+Vue-router+Vuex+axios)(Vue+webpack项目实战系列之二)
    Vue实战Vue-cli项目构建(Vue+webpack系列之一)
    module.exports,exports,export和export default,import与require区别与联系【原创】
  • 原文地址:https://www.cnblogs.com/tz90/p/12232885.html
Copyright © 2011-2022 走看看