1.联合文件系统
Docker 的镜像是由一个一个的文件组成的,也就是联合文件系统,可以理解为一个系统分为了好几块,其中每个小块是一个文件,这个文件一般是可以共用的,具体如下图所示:
看最下面的图
bootfs 一般是用于电脑从黑屏到启动引导的一个文件系统,这个文件系统是可以被很多系统共用的,例如centos ubantu等等,而上层的rootfs包含的是一些基本的文件,例如/etc, /dev /bin 等目录,因系统的不同而不同。
这也是为什么docker 通过容器安装的centos非常小,这是因为容器安装的centos的bootfs是用宿主机的kernel,其只需包含一些基本的命令,工具和程序库即可。同时正是因为容器的centos的用了宿主机的内核,只需运行加载一些必要的文件,因此启动很快。
2.以tomcat为例子
在docker pull 镜像名 时,会发现下载下来的时候都是一层一层的
在运行容器的时候是在镜像上面加一层容器层,所有的操作是基于容器层的
3.制作一个commit 镜像的例子
还是先下载一个tomcat镜像,最初的tomcat容器里面webapps里面是没有文件的,这里制作一个在webapps里面有文件的镜像
步骤1:git pull tomcat:9.0 #下载镜像
步骤2: docker run -d --name tomcat01 -p 3355:8080 镜像id #运行镜像
步骤3:docker ps 查看 tomcat容器的id
步骤4:docker exec -it 容器id #进入容器
步骤5:参考下图
步骤6:制作镜像提交到本地仓库 docker commit -a="liam" -m="add app" 容器id tomcat03:1.0
文章评论