Docker容器技术之数据

Docker容器技术之数据

Docker容器在退出之后,里面的数据在用户眼里就是不见了,删除了。在生产环境中,这样不利于需要持久化的数据。为了解决这个问题,就需要引入Docker的数据管理。

一、Data Volume

Data Volume本质上是本地系统环境中的目录或者文件,在启动容器的过程中直接mount到容器中。具有以下特点:

  1. 是目录或者文件,不是没有格式化的磁盘;
  2. 容器能够读写volume中的数据;
  3. volume数据可以被永久的保存,即使容器已经销毁。
    在使用上,docker提供了两种类型的volume:bind mount和docekr managed volume.
(一)bind mount

bind mount是将host上已存在的目录或文件mount到容器。
下面进行演示:
在这里插入图片描述在上面的演示中,我们讲用户家目录下的test目录挂载到容器下面的根目录里面的test目录里面,分别在主机环境和容器环境看到的内容是完全一样的。
当我们在容器当中修改文件会出现什么样的情况:
在这里插入图片描述
首先在容器中修改文件,然后在主机中查看,里面的内容完全一样。

-v标志使用的格式是

-v <host path>:<container path>

如果在镜像中不存在,则在创建容器的过程中会自动创建。挂载之后,如果里面有内容,则会被隐藏起来,取而代之的是跟操作系统的mount行为一样。-v的使用便达到了本地主机和容器共享数据了。这样的使用场景非常的多,比如web静态文件可以放在主机中,在主机中修改文件就可以直接起到作用。

docker managed volume

docker managed volume与bind mount在使用上的最大区别是不需要指定mount源,指明mount point就行了。使用的方法为:
在启动容器的时候还是使用-v标志,但是跟bind mount不一样额地方是不需要:(冒号也不要),直接跟进挂载点就行了,docker会自动创建数据卷。
在这里插入图片描述
可以看到test目录已经出现在容器的系统根目录里面了。那么这个数据卷具体是在哪里呢?

helmer@Hanssen:~$ docker inspect box
[
   "Mounts": [
            {
                "Type": "volume",
                "Name": "69727dec1d590123a478f03046d09a92ba01ce4f2b6599ec816d2ee3e5f7e4a3",
                "Source": "/var/lib/docker/volumes/69727dec1d590123a478f03046d09a92ba01ce4f2b6599ec816d2ee3e5f7e4a3/_data",
                "Destination": "/test",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }
        ],
     

从上面docker inspect box命令的输出结果可以看出,数据卷的存放位置在"/var/lib/docker/volumes/69727dec1d590123a478f03046d09a92ba01ce4f2b6599ec816d2ee3e5f7e4a3/_data"目录里面,现在容器里面写入数据,然后到主机目录里面查看:
在这里插入图片描述
从上图中可以看到,在容器里面添加的文件在主机上可以看到,并且是一样的。
bind mount 和docker managed volume实现了相同的功能,但是也有区别:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

helmer_hanssen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值