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

    Docker镜像管理

    镜像是Docker容器的基础,想运行一个Docker容器就需要有镜像。我们上面已经学会了使用search搜索镜像。那么这个镜像是怎么创建的呢?

    创建镜像

    镜像的创建有以下几种方法:

    使用ISO镜像:回顾下OpenStack,我们在创建虚拟机的时候,首先使用iso安装定制了镜像上传到Glance上面,对于Docker来说,我们同样可以使用ISO镜像来制作基本镜像。

    使用工具制作镜像:不同的操作系统都提供了相应的工具来让用户创建Docker镜像,比如Centos可以使用febootstrap。debian/ubuntu使用debootstrap。

    基于本地模板导入:Docker支持从一个操作系统模板文件导入一个镜像。

    一般我们都是使用一些公共的基础镜像,然后在这个基础上,再根据自身需求进行定制。比如后面要讲到的Docker File的方式,来创建镜像。

    获取镜像

    既然有了Docker Hub,我们就不要重复造轮子了,直接下载一个官方提供的centos镜像吧。

    [root@linux-node1 ~]# docker pull centos
    
    Using default tag: latest
    
    latest: Pulling from library/centos
    
    a02a4930cb5d: Pull complete
    
    Digest: sha256:184e5f35598e333bfa7de10d8fb1cebb5ee4df5bc0f970bf2b1e7c7345136426
    
    Status: Downloaded newer image for centos:latest
    

    Docker镜像文件是有若干层组成的,行首的名称就是各层的ID。这就是Docker镜像的一个特点。其实分层设计是很多设计的最佳实践之一。由于网络原因,国内用户可能需要等待很久。如果下载中断可以再次执行docker pull centos。

    镜像可以有不同的标签,例如v1.0、v1.1这样,默认情况下,如果我们不再centos后面增加任何的标签会下载标签为latest的镜像,也就是最新版本,而且默认是从docker hub上进行下载。

    查看镜像

    使用docker images可以查看当前系统中都有哪些镜像。

    [root@linux-node1 ~]# docker images
    
    REPOSITORY TAG IMAGE ID CREATED SIZE
    
    centos latest 1e1148e4cc2c 2 months ago 202MB
    

    使用docker images可以列出本地主机上已经存在的镜像,每个镜像都有一个唯一的镜像ID,我们可以看到有以下几个栏目:

    • REPOSITORY:镜像来自于哪个仓库

    • TAG:镜像的标签。用来标记镜像的不同版本等。

    • IMAGE ID:镜像的唯一ID。

    • CREATED:镜像创建时间。

    • VIRTUAL SIZE:镜像的大小。

    镜像的导入导出

    如果你想把自己的镜像传给别人怎么办,Docker提供了导入和导出的命令:

    导出镜像

    [root@linux-node1 ~]# docker save -o centos.tar centos
    

    导入镜像

    将导出的镜像scp到另外的一台机器上后做导入。

    [root@linux-node2 ~]# docker load --input centos.tar
    

    或者使用重定向进行导入

    [root@linux-node2 ~]# docker load < centos.tar
    

    Docker镜像这种导入和导出是完整,可以看到镜像ID等都没有发生改变。

    [root@linux-node2 ~]# docker images
    REPOSITORY TAG IMAGE ID CREATED SIZE
    centos latest 1e1148e4cc2c 2 months ago 202MB
    

    删除镜像

    使用docker rmi命令可以删除本地的镜像,可以使用镜像的标签或者镜像的ID。他们两者之间是不同的。

    docker rmi 标签:会删除指定标签的镜像,但是镜像本身不会被删除,因为一个镜像对象可以有多个标签,就像Linux文件的硬链接,当镜像只剩下一个标签的时候,使用标签删除镜像,才会删除镜像本身。

    docker rmi ID:使用镜像的ID删除镜像,会先删除该镜像的所有标签,然后再删除镜像文件本身。

    注意:如果镜像创建的容器存在时,镜像是无法被删除的。不过你可以使用-f的参数强制删除镜像,并不建议这么做。

    看起来Docker的镜像操作是比虚拟机要便捷的多,目前来说使用几个简单的命令,就可以完成镜像的管理工作,不过这还只是基础。

  • 相关阅读:
    django如何给上传的图片重命名(给上传文件重命名)
    Nginx 常见问题解决
    nginx 出现413 Request Entity Too Large问题的解决方法
    python判断一个对象是否可迭代
    InnerClass annotations are missing corresponding EnclosingMember annotations. Such InnerClas...
    Android Studio中新建和引用assets文件
    android 登录效果
    Android (争取做到)最全的底部导航栏实现方法
    抽屉效果的导航菜单
    Android开发之自定义局部导航菜单
  • 原文地址:https://www.cnblogs.com/wangyh702/p/11433716.html
Copyright © 2011-2022 走看看