内容正文:
课程名称
第3章 Docker镜像
计划学时
4学时
内容分析
本章主要介绍base镜像、镜像的本质、查找本地镜像、构建镜像、Docker Hub Docker镜像优化
教学目标
与教学要求
要求学生理解线性代数的相关概念、掌握范数的有关知识、掌握特征值和奇异值的运算、理解主成分分析的方法和原理
教学重点
镜像的本质、查找本地镜像、构建镜像、Docker Hub Docker镜像优化
教学难点
构建镜像、Docker Hub Docker镜像优化
教学方式
课堂讲解及ppt演示
教
学
过
程
第一课时
(base镜像、镜像的本质、查找本地镜像、构建镜像)
回顾内容
1.介绍本书,引出本课时的主题
Docker镜像是Docker容器的基石,容器是镜像的运行实例,有了镜像才能启动容器。Docker镜像是一个只读的模板,一个独立的文件系统,包括运行一个容器所需的数据,可以用来创建容器。
2.明确学习目标
(1) 能够了解base镜像
(2) 能够掌握镜像的本质
(3) 能够掌握查找本地镜像
(4) 能够掌握使用docker commit命令构建镜像
(5) 能够掌握使用Dockerfile构建镜像
知识讲解
· base镜像
base(基础)镜像是指完全从零开始构建的镜像,它不会依赖其他镜像,甚至会成为被依赖的镜像,其他镜像以它为基础进行扩展。
通常base镜像都是Linux的系统镜像,如Ubuntu、CentOS、Debian等。
下面通过Docker拉取一个base镜像并查看,这里用以CentOS为例,示例代码如下:
· 镜像的本质
Docker镜像是一个只读的文件系统,由一层一层的文件系统组成,每一层仅包含前一层的差异部分,这种层级文件系统被称为UnionFS。大多数Docker镜像都是在base镜像的基础上进行构建,每进行一次新的创建就会在镜像上构建一个新的UnionFS。
查看ubuntu:15.04镜像的层级结构,示例代码如下:
· 查找本地镜像
Docker本地镜像通常是储存在服务器上的,下面验证本地镜像的储存路径,示例代码如下:
从以上示例中可以看到,Docker本地镜像储存路径是/var/lib/Docker。
在本地查看镜像时,通常使用docker images命令,示例代码如下:
从以上示例中可以看到,结果显示中有多项镜像信息,下面对信息进行解释。
REPOSITORY
镜像仓库,即一些关联镜像的集合,例如,Ubuntu的每个镜像对应着不同的版本。与Docker Registry不同,镜像仓库提供Docker镜像的存储服务。即Docker Registry中有很多镜像仓库,镜像仓库中有很多镜像(相互独立)。
TAG
镜像的标签,常用来区分不同的版本,默认标签为latest。
IMAGE ID
镜像的ID号,镜像的唯一标识,常用于操作镜像(默认值只列出前12位)。
CREATED
镜像创建的时间。
SIZE
镜像的大小。
· 使用docker commit命令构建镜像
使用docker commit命令将容器的可读可写层转换为一个只读层,这样就把一个容器转换成了一个不可变的镜像。如图所示。
下面给一个Centos的镜像安装一个Vim服务,设置开机启动,并将其构建成一个新的镜像,以免每次启动容器都要再次安装Vim。
首先启动一个Centos的容器,示例代码如下:
从以上示例中可以看到,容器启动之后,主机名发生了改变,说明用户直接进入了容器,再进行操作就是对容器的操作。
然后,在容器中安装vim,示例代码如下:
安装完成之后,退出容器,示例代码如下:
使用exit命令退出容器之后,该容器将默认关闭。
下面使用docker commit命令在CentOS镜像的基础上创建新的镜像,示例代码如下:
在命令中需要镜像ID号来指定基础镜像,并不需要将ID都输入进去,只要输入几个字符使ID号与其他镜像不冲突即可。
此时可以看到刚刚构建的新镜像,代码如下。
从以上示例中可以看到,新镜像的大小是326MB,而比前的CentOS镜像只有202MB,这是因为在安装Vim时还安装了许多的依赖包。
然后,查看镜像中是否已经自动安装了Vim,示例代码如下:
从以上示例中可以看到,新镜像中已经包含了Vim。
这种构建新镜像的方式在工作中并不常见,原因如下。
(1)效率低下,如果要给Ubuntu镜像也添加一个Vim,需要将上述全部过程重复一遍。
(2)不透明,用户使用时不知道镜像是如何构建的,难以对镜像做出正确的判断。
设,已知下列3个方程,对该方程组进行求解。
· 使用Dockerfile构建镜像
镜像可以基于Dockerfile构建,Dockerfile是一个描述文件,包含若干条命令,每条