1、容器创建时需要指定镜像,每个镜像都由唯一的标示Image ID,和容器的Container ID - -样,默认128位,可以使用前16为缩略形式,也可以使用镜像名与版本号
两部分组合唯一标识,如果省略版本号,默认使用最新版本标签( latesr )
2、镜像的分层: Docker 的镜像通过联合文件系统( union filesystem )将各层文件系统叠加在一起,容器分层最大不超过128层。
bootfs: 用于系统引导的文件系统,包括bootloader 和kernel, 容器启动完成后会被卸载以节省内存资源roofs: 位于bootfs 之上,表现为Docker容器的跟文件系统》传统模式中,系统启动时,内核挂载rootfs时会首先将其挂载为“只读”模式,完整性自检完成后将其挂载为读写模式》Docker 中,rootfs 由内核挂载为“只读”模式,而后通过UFS技术挂载一个“可写”层(Docker中rootfs只为只读)
3、已有的分层只能读不能修改,并且上层镜像的优先级大于底层镜像
使用 COMMIT 制作镜像文件容器转为镜像:docker commit CID -t xx.xx.xx
举例:利用Dcoker commit方式制作一个mysql镜像
首先到第三方镜像下载一个centos6.7的镜像,这里下载第三方镜像的原因是因为下载Centos镜像为官方仓库,为最精简版本的镜像,因此没有前台守护进程,所有下载了也不能正常启动,故下载第三方镜像。
下载完镜像转换为容器
然后我们进入这个容器并且安装mysql
启动mysql服务
然后给mysql设置初始密码并且登录
创建测试数据库test111
然后退出容器将容器转换为镜像
docker commit mysql mysql:5.1,其中mysql为容器的标识符,也可以是CID值,mysql:5.1为转换镜像后的镜像名称,创建完查看镜像,出现转换后的镜像。
测试是否为转换的镜像,启动并查看
注意:容器转换为镜像的时候commit命令是将当时的状态进行保存,但是不知道从镜像运行成容器的时候怎么做,所以需要将容器的command替换为数据库的启动命令,只有这样,容器被启动的时候才会启动数据库,数据库服务才会正常启动,commit更贴近于备份,保存状态。
镜像正常工作的前提:工作在前台的守护进程至少一个
备注:此文章为本人学习笔记,各位大佬不喜勿喷,谢谢!
§ §