前面已经写了两篇关于docker的博文了,在工作中有关docker的基本操作已经基本讲解完了。相信现在大家已经能够熟练配置docker以及使用docker来创建镜像以及容器了。本篇博客将会讲解如何让容器中的一个目录与宿主机的一个目录进行绑定。这样就可以实现容器与宿主机之间的文件共享。
例如:我们只要把网站数据放到宿主机的共享文件中,无需再频繁登录容器,就可以实现网站的部署,这样是不是很酷?
接下来本篇博客将会使用几个简单的命令带你完整演示上面的例子怎么玩。
另外,在《Docker端口映射及创建镜像演示(二)--技术流ken》我的这篇博文中虽然可以创建镜像, 但是还是严重依赖于一个别人做好的一个镜像,无法定制自己的镜像,其实更适合于备份或者容错使用。
下一篇博客将会再讲解一个创建镜像更高级的操作,让你可以真正定制属于自己的镜像。
但鉴于篇幅大小,本篇博客先详细讲解数据卷volume,具体如何创建更高级的镜像,将会在下一篇博客中具体演示,敬请期待。
数据卷volume功能特性
数据卷 是一个可供一个或多个容器使用的特殊目录,实现让容器中的一个目录和宿主机中的一个文件或者目录进行绑定。数据卷 是被设计用来持久化数据的
对于数据卷你可以理解为NFS中的哪个分享出来的挂载点,指宿主机共享的目录。
容器中数据的持久存储
容器间的资源共享
容器的迁移(分布式)
对数据卷的修改会立马生效
对数据卷的更新,不会影响镜像
数据卷默认会一直存在,即使容器被删除 (注意docker自主管理的会被删除,容器删除前一定要对数据卷进行备份)
数据卷volume共享方式
实现数据卷有如下三种方法
Bind mount volume:用户需要明确指定容器中的目录和宿主机中的哪个目录进行绑定
Docker Management Volume:docker daemon自行管理将容器中的目录和宿主机中的哪个目录进行绑定
基于一个现有容器实现多个容器之间文件共享
数据卷volume文件共享之Bind Mount Volume
1. Bind mount volume
第一步:在宿主机创建目录并准备测试文件
[root@ken ~]# mkdir /ken [root@ken ~]# echo "test for volumes by ken">/ken/index.html