Docker容器镜像:
1)docker client 向docker daemon发起创建容器的请求;
2)docker daemon查找本地有客户端需要的镜像;
3)如无,docker daemon则到容器的镜像仓库中下载客户端需要的镜像;
4)拿到容器镜像后启动容器。
容器镜像介绍:
Docker镜像就是一组只读的目录,或者叫只读的Docker容器模板。镜像中含有一个Docker容器运行所需要的文件系统,所以我们说Docker镜像是启动一个Docker容器的基础。
可以将Docker镜像看成是Docker容器的静态时,也可将Docker容器看成是Docker镜像的运行时。
从Docker的官方文档来看,Docker容器的定义和Docker镜像的定义几乎是相同的,Docker容器和Docker镜像的区别主要在于Docker容器多出了一个可写层。
容器中的进程就运行在这个可写层,这个可写层有两个状态,即运行态和退出态。当我们dockerrun运行容器后,docker容器就进入了运行态,当我们停止正在运行的容器时,docker容器就进入了退出态。
当我们将容器从运行态转为退出态的时候,期间发生的变更都回写入到容器的文件系统中(需要注意的是,此处不是写入到docker镜像中。)
联合文件系统(UnionFS)是一种轻量级的高性能分层文件系统。它支持将文件系统中的修改信息作为一次提交,并层层叠加,同时可以将不同目录挂载到同一个虚拟文件系统下,应用看到的是挂载的最终效果。
联合文件系统是实现Docker镜像的技术基础。Docker镜像可以通过分层来进行继承。例如:用户基于基础镜像(用来生成其他镜像的基础,往往没有父镜像)来制作各种不同的应用镜像。这些镜像共享同一个基础镜像层,提高了存储效率。此外,当用户改变了一个Docker镜像(比如升级程序到新的版本),则会创建一个新的层layer,因此,用户不用替换整个原镜像或者重新建立,只需要添加新层即可。用户分发镜像的时候,也只需要分发被改动的新层内容(增量部分)。这让Docker的镜像管理变得十分轻量级和快速。
基础镜像支持tomcat应用的运行。
容器镜像是用来启动容器的,容器镜像就是文件系统,将文件系统进行分层管理,通过联合文件系统进行分层叠加。在可写层来安装新的软件。
基础镜像:
1)部署一台主机,最小化软件安装操作系统
2)把最小化软件安装操作系统进行打包,打包操作系统的根目录
排除/proc及/sys
tar --numeric-owner --exclude=/proc --exclude=/sys -cvf centos7u6.tar /
说明:
1、 --numeric-owner: 以UID和GID代替用户名和组名 (numeric:数字、分数)因为有些用户的UID和GID不一样。文件的属主和属组全部替换成数字。
2、--exclude=/proc(给每个进程创建文件夹,文件描述符相关信息) --exclude=/sys(内核程序使用的目录)在新的docker镜像不包括上述目录
3、-cvf:压缩选项
4、centos7u6.tar为目标文件
5、/ 代表从根开始
3)把获取的根打包文件导入到Docker Host中。这样就得到了基础镜像。
docker import centos7u6.tar centos7u6:latest
[root@vm1 ~]# docker import --help
Usage: docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
Import the contents from a tarball to create a filesystem image
Aliases:
docker image import, docker import
Options:
-c, --change list Apply Dockerfile instruction to the created image
-m, --message string Set commit message for imported image
--platform string Set platform if server is multi-platform capable
[root@vm1 ~]#
再次说明:
Usage:docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
导入的过程中,给镜像起名字加版本。
import和Export,save和load都是成对出现的。
4)检查:
docker images
docker image ls
通过这个试验,我们看到镜像是什么,是文件系统。
5)拿基础镜像来启动容器:
docker run -it --name c1000 centos7u6:latest /bin/bash
在容器中,我们进入到/proc中,看到的内容就是容器中的进程。
应用镜像制作:
应用镜像的概念:指应用程序运行的环境。
基础镜像,安装apache应用,打包成一个应用镜像,启动容器的时候,再也不用安装apache,只要把网页的内容放到目录中。程序员不用安装任何软件。