6.Docker存储卷

在宿主机上能够被共享的目录(可以是文件)就被称为存储卷(volume)。

存储卷:在宿主机中找一个本地的文件系统,可能存在某一个目录中,直接与容器上的文件系统中的某一目录建立绑定关系。

使用存储卷的原因:

  1. 关闭并重启容器,数据不会受影响;但删除Docker容器,则其更改将会消失
  2. 存储于联合文件系统中,不易于宿主机访问
  3. 容器间数据共享不便

 Docker有两种类型的卷

每种类型都在容器中存在一个挂载点,但其在宿主机上位置有所不同

  1. 绑定挂载卷:在宿主机上人工指定一个特定的路径,在容器中也需要指定一个特定的路径,两个已知的路径建立关联关系
  2. docker管理卷: 只需要在容器内指定容器的挂载点是什么,而被绑定宿主机下的那个目录,是由容器引擎daemon自行创建一个空的目录,或者使用一个已经存在的目录,与存储卷建立存储关系,这种方式极大解脱用户在使用卷时的耦合关系,缺陷是用户无法指定那些使用目录,临时存储比较适合

在容器中使用Volumes

docker run命令使用-v选项使用Volume

docker run -it -name rbox1 -v /data busybox   #/data指定docker的目录

docker inspect -f {{.Mounts}} rbox1   查看rbox1容器的卷,卷标识符及挂载的主机目录

bind-mount volume:

docker run -it -v HOSTDIR:VOLUMEDIR --name rbox2 busybox  #宿主机目录:容器目录

docker inspect -f {{.Mounts}} rbox2

 

实际操作:

docker管理卷


 #创建并启动名称为b2的容器,绑定/data目录
[root@zanghao01 ~]# docker run --name b2 -it -v /data busybox 
/ # ls l
ls: l: No such file or directory
/ # ls /
bin   data  dev   etc   home  proc  root  sys   tmp   usr   var
root@zanghao01 ~]# docker inspect b2
#找到mount这块
"Mounts": [
            {
                "Type": "volume",
                "Name": "52276af0a569dd076cf0917cee99f624cbc7decbcab4b70c292f3db6d564fdef",
                "Source": "/var/lib/docker/volumes/52276af0a569dd076cf0917cee99f624cbc7decbcab4b70c292f3db6d564fdef/_data",
                "Destination": "/data",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }

[root@zanghao01 ~]# cd /var/lib/docker/volumes/52276af0a569dd076cf0917cee99f624cbc7decbcab4b70c292f3db6d564fdef/_data
[root@zanghao01 _data]# ls
#创建文件test.html
[root@zanghao01 _data]# echo "hello container" >> test.html

#可以看到容器中已出现该文件
/data # ls
test.html

绑定挂载卷

#创建关闭就删除容器  使用了-rm参数
root@zanghao01 ~]# docker run --name b2 -it --rm -v /data/volumes/b2:/data busybox

[root@zanghao01 _data]# docker inspect b2
"Mounts": [
            {
                "Type": "bind",
                "Source": "/data/volumes/b2",
                "Destination": "/data",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
root@zanghao01 _data]# cd /data/volumes/b2
[root@zanghao01 b2]# vim index.html
#再重启创建b2容器
[root@zanghao01 ~]# docker run --name b2 -it --rm -v /data/volumes/b2:/data busybox
/ # cd data
/data # ll
sh: ll: not found
/data # ls
index.html
/data # cat index.html 
nihao hahahahhah

参考:https://www.cnblogs.com/reid21/articles/9816443.html 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值