路漫漫其修远兮
吾将上下而求索

docker学习:数据卷操作

docker的数据卷

docker container的某个目录可以映射到宿主机的某个目录,共享目录,就是一个磁盘供两个主机(一个宿主机,一个docker container)同时挂载

对数据卷的修改会立即生效
对数据卷的更新与镜像无关,镜像不会改变
数据卷会一直存在,直接保存在宿主机的目录中

容器使用数据卷的方式

1、创建容器的时候直接使用数据卷就行

-v, –volume value                Bind mount a volume (default [])   指明docker共享目录,挂载点,在这里的文件,宿主机也可以看到,并且同步,其实就是一个磁盘,默认映射的宿主机路径很长

#终端1
[root@localhost ~]#docker run -it --name bob -v /data centos:latest
[root@9f948c274f1c /]# 
[root@9f948c274f1c /]# ls
anaconda-post.log  bin  data  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@9f948c274f1c /]# cd data/
[root@9f948c274f1c data]# ls
[root@9f948c274f1c data]# echo hello >> txt
[root@9f948c274f1c data]# ls
txt
[root@9f948c274f1c data]# cat txt 
hello
#终端2
[root@bogon /var/lib/docker/volumes]#ls
f6c966078b56982e978e206d13e6fa755bf9b1f3b7ed464d80c05b35fb618135  metadata.db
[root@bogon /var/lib/docker]#cd volumes/f6c966078b56982e978e206d13e6fa755bf9b1f3b7ed464d80c05b35fb618135/_data/
[root@bogon /var/lib/docker/volumes/f6c966078b56982e978e206d13e6fa755bf9b1f3b7ed464d80c05b35fb618135/_data]#ls
txt
[root@bogon /var/lib/docker/volumes/f6c966078b56982e978e206d13e6fa755bf9b1f3b7ed464d80c05b35fb618135/_data]#cat txt 
hello

将container删除,保存的文件还在宿主机目录里面

2、上面是服务自动分配的目录对应关系,路径太长,有时候我们需要自己指定对应关系

下面的示例将container的/data目录与主机的/data1目录相对应,这样,在容器的/data目录下操作,实际和主机操作/data1是同一个目录,即使容器被删除,文件还存在

[root@localhost ~]#docker run -it --name sam -v /data:/data1 centos:latest
[root@1261df495754 /]# 
[root@1261df495754 /]# cd data/
[root@1261df495754 data]# ls
txt
[root@1261df495754 data]# cat txt 
hello

3、在dockerfile中定义

4、Docker 挂载数据卷的默认权限是读写,用户也可以通过 :ro 指定为只读。

[root@localhost ~]#docker run -it --name sam -v /data:/data1:ro centos:latest

在容器之间共享卷

–volumes-from value          Mount volumes from the specified container(s) (default [])

后跟容器名

删除容器的时候同时删除卷

docker run --rm  
表示容器关闭的时候会自动被删除,同时删除其卷,当所有的容器都不再使用此卷的时候(此容器是最后一个使用此卷的容器时)

备份和恢复

docker run --rm --volum-from vol_container -v $(pwd):/backup  busybox tar cvf /backup/data.tar /data  同时使用两个卷,前面一个是正常使用的,后面是备份的,

未经允许不得转载:江哥架构师笔记 » docker学习:数据卷操作

分享到:更多 ()

评论 抢沙发

评论前必须登录!