博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker基础-5-image概述
阅读量:4302 次
发布时间:2019-05-27

本文共 1581 字,大约阅读时间需要 5 分钟。

本篇来简单了解下什么是镜像和镜像的几个基本操作命令

1.什么是image

 

尝试观察上面这个图,理解镜像有以下几个特点

1)镜像是文件和meta data的集合(root filesystem)

例如一个centos的镜像,里面包含一些最精简版的centos文件系统,还有其他软件包等文件。

2) 镜像是分层的,每层都可以添加删除改变文件,成为一个新的image

举例,我在1)中的centos这个基础镜像,在这之上,添加java环境,就可以制作成一个新的镜像文件。

3) 不同的image可以共享同一层layer

例如我有一个centos的基础镜像,这个镜像所在的层(layer),我可以共同开启一个java的镜像和一个tomcat的镜像。这就是不同镜像可以共享同一层的意思。

4) 镜像本身是只读的

Image本身是read-only这个怎么去理解呢,一个镜像文件制作出来之后,是不可以改变。启动镜像就产生了容器,如果镜像发生了改变就变成了其他的镜像。一个镜像,如果启动就变成了容器,如果容器关闭,这个镜像还在这里,不会发生变化,当然容器里面有变化。我个人理解可以这样去尝试理解:镜像是静态,不可改变的,容器是动态,可以操作。(容器后面介绍)

2. 如何获取image

在前面一篇末尾,我使用了一个命令 docker pull busybox来下载一个镜像。这里来解释一下这个命令。Docker表示调用的是docker这个CLI,以后执行任何docker命令,前面都需要添加docker这个前缀,pull是拉取的意思,如果你使用过git拉取代码,同样的意思,比较好理解。Busybox是一个镜像的名称,默认是从hub.docker.com这个仓库中下载一个叫busybox的镜像到你本地docker环境。

 

下面我演示下载一个jenkins的镜像操作

上面这个图,显示jenkins这个镜像使用了20个layer,可以说每一层都可以是一个镜像。这个下载速度取决你网速,我发现我在虚拟机里面下载很慢。这里说一下docker的优点,上面下载20个镜像,如果我下次下载一个其他镜像文件,例如centos,加入centos和jenkins两个镜像之间都相同的一部分layer是完全一样的,这样下次下载centos镜像的时候,在jenkins已经下载过的文件就不会重复下载。从这点也可以说明镜像是只读,如果这里不是只读,就无法同时给多个镜像提供,否则如果可写,那么centos和jenkins相同的文件就会乱套了,对不对。

 

如果你网速实在太慢,那你可以 docker pull hello-world

 

还有一种方法获取镜像,那就是使用DockerFile来build一个镜像出来,dockerfile是有语法的,后面我们再来学习。如果看过我pipeline教程的人,应该知道有一个jenkinsFile的概念,两个差不多的意思。

 

3.如何查看镜像

如果我们想查看docker里存在哪些镜像,你可以通过一下任意一个命令去查询。

 

上面的docker images 和 docker image ls 都可以查询出你环境下存在哪些镜像文件,就我个人,我喜欢使用第一种命令。

简单介绍下每个字段的含义,REPOSITORY,翻译过来是库的意思,这里只在镜像仓库中的名称是busybox;字段TAG是标记的意思,字段值latest,默认是这个latest tag,如果有其他tag,后面我们用多了不同镜像,可以看到其他tag值;IMAGE ID,就是镜像id,在镜像仓库中的一个唯一的ID,有点像git每次提到的commit的值一样。CREATED字段就是这个镜像是什么时候制作上传到仓库中的;SIZE就好说,镜像的文件大小。

Docker镜像先介绍到这里,后面继续学习镜像的知识。

转载地址:http://mzows.baihongyu.com/

你可能感兴趣的文章
mfc中主窗体显示(任务栏上方显示)
查看>>
MFC改变对话框背景图片实例
查看>>
浅谈MFC中BitBlt与StretchDIBits的区别
查看>>
关于HBITMAP,CBITMAP,BITMAP的转换以及图像显示的一点归纳
查看>>
CDC中图片绘制到控件上
查看>>
C#用到windows 消息列表Message类MSG的id代号
查看>>
C++ Map用法详解
查看>>
C++中vector作为参数的三种传参方式
查看>>
OpenCV中Mat总结
查看>>
opencv----(1) mat最好用,和IplImage,cvmat 比较
查看>>
OpenCV学习笔记之 ( 三 ) MFC显示Mat图片
查看>>
彻底解决显示Opencv中Mat图像到Mfc窗口问题
查看>>
在MFC中显示cv::Mat
查看>>
在MFC图像控件上显示opencv Mat格式图片
查看>>
在OpenCV中将cv::Mat绘制到MFC的视图中
查看>>
在MFC的picture控件中如何显示Mat图
查看>>
MFC+OPENCV+显示MAT类型图像
查看>>
CvMat、Mat、IplImage之间的转换详解及实例
查看>>
RGB和RGBQUAD的区别
查看>>
BITMAPINFO结构
查看>>