docker的自我认识(5)
docker的自我认识(5)
这几天去扬州参加一个云计算和大数据的国际会议,写到一半的docker认识就被这么落下了,😢。
本篇主要是自己对docker的数据持久化的大体了解以及一些认识。
自己对docker的认识还只是初步阶段,并且在以后会不断加入新的内容,希望大家多多包涵!😁
Docker容器的中数据持久化问题,一直是一个讨论比较多的话题。在docker中,容器中的数据持久化主要分别两种方法:
- 通过主机进行数据的挂载
- 构建数据卷容器
通过上述两种方法,可以对容器的数据进行持久化的操作,从而防止由于容器被删除而导致数据的丢失。
##主机挂载卷
通过主机进行数据的挂载,原理是在容器中提供一个数据卷,即挂载点,然后在运行容器的时候通过-p
参数将宿主机的某一个目录挂载到容器中去。
这样做很容易实现宿主机和容器之间的数据传输与共享,而且容器的数据都是保存到本地宿主机上的,这样就很容易的实现数据和容器的分离。
但是这样做存在一些缺点,因为容器的宗旨是一次构建,到处运行。如果将容器的数据保存到宿主机上,这样导致容器的可移植性变得很差。如果要将容器进行迁移,还需迁移数据,这非常的不方便。
##数据卷容器
数据卷容器是指一个专门用来挂载数据卷的容器,以供其他容器使用。它主要用于多个容器需要从一处获取数据的情况。有了确定的数据卷容器之后,对它有依赖关系的其他容器就可以通过--volumes-from
引用他的数据卷。
这样做的优点也非常明显,docker容器之间可以很好的共享数据,而不需要宿主机配置一个正确的挂载点。
但是缺点是性能略差,原因是数据卷容器本身只是定义了docker虚拟文件系统中数据的存储位置,数据是存储在docker的虚拟文件系统中的,这样会导致IO性能的下降。因此,如果应用需要非常好的IO性能的话,那么数据卷容器可能不是最理想的选择。
注意点:无论是声明数据卷的容器,还是后续引用该数据卷的容器,容器的停止和删除都不会导致数据卷本身的删除。
##总结
通过上述两种方式,都能够很好的做到容器中数据的持久化工作。但是这两中方法都有各自的优缺点,应该在充分考虑自己的使用场景的情况下,选择最适合自己的方案。