这两天开始学习docker,发现docker确实很强大,让网站部署和维护的效率大大提高。遂准备将手头维护的几个小站,全部docker化。整理的过程中感觉到,docker可以以功能或者进程为单位进行部署和维护,不用再花时间在繁琐的配置上面,但是docker和宿主之间的数据共享以及docker间的数据共享仍然是让人头疼和操心的地方。
几个基本概念:
docker: 一种容器管理技术,这里也指既有的开发工具链。
container: 容器
image: 镜像
volum:卷 [ 译者:卷可以理解成计算机中的文件路径 ]
容器中管理数据主要有两种方式:
数据卷(Data Volumes)
数据卷容器(Data Volume Containers)
数据卷
数据卷是一个可供容器使用的特殊目录,它绕过文件系统,可以提供很多有用的特性:
数据卷可以在容器之间共享和重用; 对数据卷的修改会立马有效; 对数据卷的更新,不会影响镜像; 卷会一直存在,直到没有容器使用。数据卷的使用,类似于Linux下对目录或文件进行mount操作。
挂载本地的目录到容器里
不管是把容器停掉、还是删除,数据还是存在的
挂载数据卷
其实挂载目录的时候可以指定容器name,如果不指定就随机定义了。比如上面我们没有指定它,就生成了一个名字为tender_euclid,这个名字可以使用命令 Docker ps 看最右侧一列。
这样我们使用centos镜像创建了新的容器,并且使用了tender_euclid容器的数据卷。
数据卷容器
定义数据卷容器
有时候,我们需要多个容器之间相互共享数据,类似于linux里面的NFS。所以就可以搭建一个专门的数据卷容器,然后其他容器直接挂载该数据卷。
首先建立数据卷容器
注意:这里的/data/是容器的/data目录,并非本地的/data/目录
其他容器挂载该数据卷
注意:使用–volumes-from参数所挂载数据卷的容器自身并不需要保持在运行状态
利用数据卷容器迁移数据
数据卷的备份
首先我们需要使用cent_testv数据卷新开一个容器,同时我们还需要把本地的/vol_data_backup/目录挂载到该容器的/backup下,这样在容器中/backup目录里面新建的文件我们就可以直接在/vol_data_backup/目录中看到了。 然后再把/data/目录下面的文件打包到成data.tar文件放到/backup目录下面。
恢复
先新建一个数据卷容器,再建一个新的容器并挂载该数据卷容器,然后再把tar包解包。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!