设为首页 收藏本站
查看: 601|回复: 0

[经验分享] Docker学习笔记之存储篇

[复制链接]

尚未签到

发表于 2018-5-29 06:50:42 | 显示全部楼层 |阅读模式
一、存储
docker的镜像使用一层一层文件组成的,docker的一些存储引擎可以处理怎么样存储这些文件。使用docker inspect这个命令可以查询镜像或者容器的详细信息,比如要查看centos这个镜像:
docker inspect centos DSC0000.jpg

展示信息下方的Layers,就是centos的文件,这些东西都是只读的不能去修改,我们基于这个镜像去创建的镜像和容器也会共享这些文件层,而docker会在这些层上面去添加一个可读写的文件层。如果需要修改一些文件层里面的东西的话,docker会复制一份到这个可读写的文件层里面,如果删除容器的话,那么也会删除它对应的可读写的文件层的文件。
演示
1、先创建一个带交互的容器,管它名字叫test1
docker run -i -t --name test1 centos /bin/bash2、然后在里面新建一个文件,hello.txt
DSC0001.jpg

3、接着退出容器,使用centos创建第二个容器叫test2,试着输出根目录下的hello.txt文件的内容。
DSC0002.jpg

发现没有找到此文件,虽然test1,test2都是基于centos镜像创建的,但他们都拥有各自的可读写的文件层,新创建的文件或者修改的已有的文件都会放到这个文件层,不会影响到镜像本身和使用这个镜像创建的容器。
删除容器的时候,这些容器层上面的文件也会被删除掉。
二、数据卷:Data Volumes
如果有些数据你想一直保存的话,比如:web服务器上面的日志,数据库管理系统里面的数据,那么我们可以把这些数据放到data volumes数据盘里面。它上面的数据,即使把容器删掉,也还是会永久保留。创建容器的时候,我们可以去指定数据盘。其实就是去指定一个特定的目录,剩下的docker会帮你做。
指定数据盘的命令
docker run --volume /mnt -i -t --name db centos /bin/bash说明:—volume简写形式 -v,指定数据盘的目录,注意目录是要绝对路径。
DSC0003.jpg

查看容器信息:
DSC0004.jpg

Mounts下Source表示数据存在宿主机上的真实位置,Destination表示数据盘在docker中对应的位置。及时删除容器,Source下的数据也还会存在。
指定主机目录作为数据盘
我们还可以手工指定主机上的目录作为数据盘,比如,新建一个文件夹叫data,让它作为数据盘,然后使用centos镜像创建容器,命名为db,指定数据盘位置:
docker run -v /Users/beckjiang/Desktop/data:/mnt --name db -i -t centos /bin/bash进入容器后,在/mnt/ 目录下创建文件data1,然后删除容器,查看主机上/Users/beckjiang/Desktop/data 里面,仍然会保留容器里面创建的数据。
DSC0005.jpg

三、数据容器
我们可以创建一个数据容器,也就是再创建容器是指定这个容器的数据盘,然后让其他容器可以使用这个容器作为他们的数据盘,有点像继承了这个数据容器指定的数据盘作为数据盘。
先来创建一个数据容器:
docker create -v /mnt -i -t --name dbcenter centos /bin/bash DSC0006.jpg

接着使用这个数据容器,去创建一个容器 db1:
docker run --volumes-from dbcenter --name db1 -i -t centos bash在/mnt/目录下创建data1文件:
DSC0007.jpg

完成以后退出容器,基于dbcenter这个数据容器去创建第二个容器 db2:
docker run --volumes-from dbcenter --name db2 -i -t centos bash DSC0008.jpg

查看/mnt/目录下的文件,会看到在db1容器中创建的data1文件。同样的,你在db2中的/mnt/目录创建的数据文件,也会被其他使用了dbcenter作为数据容器的容器所看到。
四、管理数据盘
查看主机上面创建的数据盘
docker volume ls DSC0009.jpg

在删除容器时,docker默认不会删除其数据盘。这里可以 查看没有容器在使用的数据盘:
docker volume ls -f dangling=true DSC00010.jpg

出现的就是没有容器在使用的数据盘,想要 删除数据盘 可以使用:
docker volume rm VOLUME NAME DSC00011.jpg

把没有容器使用的数据盘都删除掉以后,还剩下1个正在被使用的数据盘,就是上面创建的数据容器。
如果想要删除容器时,同时删除掉其数据盘,那么可以使用-v参数。(db1,db2使用dbcenter作为数据盘,先将其删掉)
docker rm -v dbcenter DSC00012.jpg
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-482324-1-1.html 上篇帖子: Docker学习笔记之网络篇 下篇帖子: Docker学习笔记之compose
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表