docker——5、docker存储卷volume

一、docker volume的集中形态

Docker 采用 AFUS 分层文件系统时,文件系统的改动都是发生在最上面的容器层。在容器的生命周期内,它是持续的,包括容器在被停止后。但是,当容器被删除后,该数据层也随之被删除了。因此,Docker 采用 volume (卷)的形式来向容器提供持久化存储。
1、Docker镜像由多个只读层叠加而成,启动容器时,Docker会加载只读镜像层并在镜像栈顶部添加一个读写层
2、如果运行中的容器修改了现有的一个已经存在的文件,那该文件会将从读写层下面的只读层复制到读写层,该文件的只读版本仍然存在,只是已经被读写层中该文件的副本所隐藏,此即“写时复制(COW)”机制

1.1 无 - 不使用 Docker volume

默认情况下,容器不使用任何 volume,此时,容器的数据被保存在容器之内,它只在容器的生命周期内存在,会随着容器的被删除而被删除。当然,也可以使用 docker commit 命令将它持久化为一个新的镜像。

1.2 Data volume (数据卷)

Why Data Volume?
1、关闭并重启容器,其数据不受影响;但删除Docker容器,则其更改将会全部丢失
2、存在的问题
(1)存储于联合文件系统中,不易于宿主机访问;
(2)容器间数据共享不便
(3)删除容器其数据会丢失
3、解决方案:“卷(volume)”
“卷”是容器上的一个或多个“目录”,此类目录可绕过联合文件系统,于宿主机上的某目录“绑定(关联)”

Data volumes:
Volume于容器初始化之时即会创建,由base image提供的卷中的数据会于此期间完成复制
volume的初衷是独立于容器的生命周期实现数据持久化,因此删除容器之时既不会删除卷,也不会对哪怕未被引用的卷做垃圾回收操作。

Volume types
docker有两种类型的卷,每种类型都在容器中存在一个挂载点,但其在宿主机上的位置有所不同。
(1)使用 “-v 容器内目录” 形式

[root@node1 ~]# docker run --name b2 -it -v /data busybox

#Docker 将本地一个 _data 目录 mount 为容器内的/data目录了

[root@node1 ~]# docker inspect b2
 "Mounts": [
            {
                "Type": "volume",
                "Name": "29ad55fbd35f05a196ab8548ce36ff01a08d628ed3a635c3a7ad5d0326ce5045",
                "Source": "/var/lib/docker/volumes/29ad55fbd35f05a196ab8548ce36ff01a08d628ed3a635c3a7ad5d0326ce5045/_data",
                "Destination": "/data",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }

/var/lib/docker/volumes/29ad55fbd35f05a196ab8548ce36ff01a08d628ed3a635c3a7ad5d0326ce5045/_data目录下新增的内容都会在容器b2的/data目录下出现。在 web 容器被删后,<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值