背景
经常使用docker的小伙伴会发现,启动标准的容器后每次都还要再配置一些自定义的配置,非常的繁琐,我们需要有一个像vmware虚拟机中那种快照的功能,这显得尤为重要。
概念
Docker镜像加载原理
docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统UnionFS。
bootfs(boot file system)主要包含bootloader和kernel, bootloader主要是引导加载kernel, Linux刚启动时会加载bootfs文件系统,在Docker镜像的最底层是bootfs。这一层与我们典型的Linux/Unix系统是一样的,包含boot加载器和内核。当boot加载完成之后整个内核就都在内存中了,此时内存的使用权已由bootfs转交给内核,此时系统也会卸载bootfs。
简单来说就是一个搭积木的过程,再配合精简细节的话,可以让一个镜像变得非常小,但是也能完成所需的功能。
命令
docker commit -m="提交信息" -a="作者名字" 容器ID 镜像名称:[标签|版本号]
实操
#查看本机的镜像
docker images
#找到tomcat镜像并启动,如果没有可以使用 docker pull tomcat 拉取下载
docker run -it -p 8080:8080 --name tomcat01 tomcat:9.0
#查看运行容器
docker ps
#进入容器
docker exec -it tomcat01 /bin/bash
#tomcat容器默认webapps目录下没有文件(精简版),以这个为例做实验,将dist底下的文件重新放回去
cp -r webapps.dist/* webapps/
#查看webapps底下文件
ls webapps
#这时候文件都移动过来了 访问 localhost:8080 就能通过浏览器访问到容器中的tomcat
localhost:8080
#这时候我们相当于改了容器了,退出容器
exit
#查看tomcat容器的容器ID
docker ps
#提交镜像
docker commit -m="添加应用到webapps下" -a="gaby" 9594467b3d07 tomcat02:1.0
#查看镜像 这时候就有我们刚才提交的tomcat02
docker images