IT工程师都需要掌握的容器技术之Docker存储管理( 二 )

下面我们-v命令进行卷挂载具体操作如下:
1. #创建容器test10,并通过-v进行卷volume1挂载,将volume1挂载到容器file1目录  2. docker container run -it --name test10 --hostname test10    3. -v volume1:/file1 centos /bin/bash  

IT工程师都需要掌握的容器技术之Docker存储管理

文章插图
 
我们可以通过如下命令查看容器test10与volume的映射关系
1. #查看容器详细的配置信息  2. docker container inspect test10  
IT工程师都需要掌握的容器技术之Docker存储管理

文章插图
 
(4) 删除卷
现在我们来看看删除卷的命令格式
1. # 删除卷  2. docker volume rm [volume name]   我们删除刚才创建的卷volume2具体操作如下
IT工程师都需要掌握的容器技术之Docker存储管理

文章插图
 
03 绑定挂载(bind mounts)自docker发布以来就支持绑定挂载了 , 绑定挂载支持的功能相较于卷来说比较有限 。绑定挂载通过将主机上的目录绑定到容器中 , 容器就可以操作和修改主机上该目录的内容 。绑定挂载性能非常好 , 但是它们依赖于具有特定目录结构的主机文件系统 。
绑定挂载的参数与卷一致 , 可以通过-v或者—mount进行挂载 , -v用于单独的容器挂载而—mount一般用于docker service 。我们在本地主机上创建目录bind_mount_test , 同时在目录中创建一个文件file1 , 然后将该目录绑定挂载到容器/home/bind_mount_test目录具体操作如下:
1. # 创建容器test1 , 同时将目录bind_mount_test绑定到容器的/home/bind_mount_test目录  2. docker container run -it -v   3.    /root/bind_mount_test:/home/bind_mount_test --name test1 centos /bin/bash  
IT工程师都需要掌握的容器技术之Docker存储管理

文章插图
 
绑定挂载的主机目录如果不存在 , 则会自动创建该目录 , 现在我们给主机目录bind_mount_test中再创建一个文件file2.txt并输入内容"kan dao ma" , 我们看看在容器中是否能够看到 , 同时我们在容器test1的bind_mount_test目录中创建一个文件file3.txt , 看看在主机上是否能够查看到 , 具体操作如下
IT工程师都需要掌握的容器技术之Docker存储管理

文章插图
 
通过上述操作我们可以发现通过绑定挂载的容器目录其实完全由主机的文件系统进行管理 , 而不像卷是通过docker自己管理的 , 所以像目录的权限 , SELINUX 等问题都需要我们自己来管理 。
04 临时文件系统(tmpfs)卷与绑定挂载主要是用于主机和容器之间共享文件 , 容器停止后数据还可以保留 , tmpfs挂载是临时的 , 数据保留在主机内存中的 , 当容器停止后数据就会被删除 。该挂载方式的数据不能在两个容器间进行共享 , 同时该挂载方式只支持linux系统 。
tmpfs挂载也有两个命令参数 , 一个是—tmps另外一个是—mount , 跟卷与绑定挂载类似 , --tmpfs用于单个容器挂载—mount用于docker service挂载 。下面我们通过—tmpfs来将容器App目录挂载到内存中 , 具体操作如下:
1. # 创建容器tmptest , 同时通过tmpfs命令将app目录挂载到内存中  2. docker container run -it --name tmptest --tmpfs /app centos /bin/bash  
IT工程师都需要掌握的容器技术之Docker存储管理

文章插图
 
05 数据卷容器上面的章节我们了解了容器的几种存储方式 , 如果我们想要容器间共享一些实时更新的数据该怎么操作呢 , 其实docker给出了解决方案就是用户数据卷容器 。数据卷容器通过卷方式挂载文件目录 , 其他容器通过挂载这个容器实现数据共享 , 这个挂载数据卷的容器就叫做数据卷容器 。数据卷容器就是一种普通容器 , 它专门提供数据卷供其它容器挂载使用 。现在我们看看怎么通过数据卷容器实现数据的共享 , 具体操作如下:
1)创建数据卷test_volume , 同时创建一个数据卷容器(其实就是普通容器) , 将这个创建的卷挂载到数据卷容器中1. # 创建卷test_volume  2. docker volume create test_volume  3.   4. #创建数据卷容器data_container , 同时将test_volume卷挂载到该容器的share_dir目录  5. docker container run -it -v test_volume:/share_dir   6.    --name data_container --hostname data_container centos /bin/bash 


推荐阅读