一款必须掌握的虚拟容器技术:Docker( 二 )


镜像的特点:镜像都是只读的 。当容器启动时,一个新的可写层被加载到镜像的顶部,这一层通常被称作“容器层”,容器层”之下的都叫“镜像层” 。
镜像的操作
提交容器副本,使其成为一个新的镜像 。
-a "作者名" -m "镜像的描述信息" 容器ID 新建的镜像名:版本号 "
练习操作的小案例:
新建一个的容器,把容器的主页对应的网页删了,然后做成一个镜像 。
run -it -p 8888:8080运行 。(-p是指定端口,8888是对外暴露的端口,对应里的8080端口,可以任意)(-P是随机端口,例 run -it -P,然后需要 ps查看随机生成的端口)
然后在虚拟机的中打开浏览器,输入:8888 。(或者在自己电脑输入虚拟机的ip加端口号)
如果出现404错误,ctrl+P+Q不停止退出,然后输入 exec -it 容器的ID /bin/bash进入 。(容器ID用 ps查)
ls -l查看,发现有和.dist 。
分别进入这两个目录,发现是空的,而.dist里面的东西本是的 。
rmdir 删除,mv .dist 把.dist改名为 。(先不退出,然后需要进)
然后重新输入网址就可以访问了 。
在里面,我们要实现案例,把的文档页面删了,cd 进入目录,然后rm -rf docs删除的文档目录 。
然后刷新页面,点击主页的,显示404,实现了我们案例的要求 。(如果之前已经点击了,不是显示404,请先清理缓存)
我们接下来要把这个做成一个镜像 。打开一个新的终端,输入-a "" -m "docs" 容器ID /:1.1" 。(/为新建的镜像名,冒号后面:1.1为版本号,可任意,-a "xxx"是加作者,-m "xxx"是镜像介绍,)
本地就有了我们自己建的镜像 。
先删除所有容器 rm -f $( ps -qa),然后新建我们的镜像容器 run -it -p 7777:8080 /:1.1 。(因为版本号不是,所以需要加上版本号,端口改为7777和前面的做区别)
先清理缓存,然后在浏览器输入网站后,点击,显示404 。
容器的数据卷(如同共享文件夹)
容器的持久化、容器间继承+数据共享
数据卷在容器内添加的做法: 1. 命令添加:2. 添加:
在宿主机根目录上新建一个目录,在目录里新建一个文件并写入:
# volume testFROM centosVOLUME ["dataVolumeContainer1","dataVolumeContainer2"]CMD echo "finished, ==========success1"CMD /bin/bash
然后build后生成镜像 build -f // -t / .(最后的.表示当前目录下,如果此时所在目录的文件名为,-f // 可省略不写)
新建新镜像容器后,容器根目录多出两个目录的数据卷(可读写) 。
容器ID查看宿主机对应的目录,直接复制然后cd进入 。
数据卷容器
容器间的配置信息的传递,数据卷的生命周期一直持续到没有容器使用它为止 。
命名的容器挂载数据卷,其它容器通过挂载这个(父容器)实现数据共享,挂载数据卷的容器,称之为数据卷容器 。
run -it --name dc01 / 创建父容器dc01
run -it --name dc02 ---from dc01 / 创建子容器dc02和dc03挂载到父容器dc01上 。
是用来构建镜像的构建文件,是由一系列命令和参数构成的脚本 。
内容基础知识 每条保留字指令都必须为大写字母且后面要跟随至少一个参数指令按照从上到下,顺序执行#表示注释每条指令都会创建一个新的镜像层,并对镜像进行提交 执行的大致流程 从基础镜像运行一个容器执行一条指令并对容器作出修改执行类似的操作提交一个新的镜像层再基于刚提交的镜像运行一个新容器执行中的下一条指令直到所有指令都执行完成 、镜像和容器之间的关系
保留字指令案例一:
自定义镜像,使其具备:
登陆后的默认路径为:/usr/local