Docker Data Volume 详解及示例

1、Docker Data Volume

1.1 概念介绍

  • Docker镜像由多个只读层叠加而成,启动容器时,Docker会加载只读镜像层并在镜像栈顶部添加一个读写层

  • 如果运行中的容器修改了现有的一个已经存在的文件,那该文件将会从读写层下面的只读层复制到读写层,该文件的只读版本仍然存在,只是已经被读写层中该文件的副本所隐藏,此即“写时复制(COW)”机制

  • 关闭并重启容器,其数据不受影响;但删除Docker容器,则其更改将会全部丢失

  • 存在的问题:

    # 存储于联合文件系统中,不易于宿主机访问;
    # 容器间数据共享不便
    # 删除容器其数据会丢失
    
  • 解决方案:“卷(volume)”
    “卷”是容器上的一个或多个“目录”,此类目录可绕过联合文件系统,与宿主机上的某目录“绑定(关联)”
    在这里插入图片描述

  • Data volumes provide several useful features for persistent or shared data

    # Volume于容器初始化之时即会创建,由base image提供的卷中的数据会于此期间完成复制
    # Data volumes can be shared and reused among containers
    # Changes to a data volume are made directly
    # Changes to a data volume will not be included when you update an image
    # Data volumes persist even if the container itself is deleted
    
  • Volume的初衷是独立于容器的生命周期实现数据持久化,因此删除容器之时既不会删除卷,也不会对哪怕未被引用的卷做垃圾回收操作

  • 卷为docker提供了独立于容器的数据管理机制

1.2 Docker Volume 管理机制

卷为docker提供了独立于容器的数据管理机制:

  • 可以把“镜像”想像成静态文件,例如“程序”,把卷类比为动态内容,例如“数据”;于是,镜像可以重用,而卷可以共享
  • 卷实现了“程序(镜像)”和“数据(卷)”分离,以及“程序(镜像)”和“制作镜像的主机”分离,用户制作镜像时无须再考虑镜像运行的容器所在的主机的环境

在这里插入图片描述

1.3 Docker Volume Types

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

# Bind mount volume
	# a volume that points to a user-specified location on the host file system
# Docker-managed volume
	# the Docker daemon creates managed volumes in a portion of the host’s file system that’s owned byDocker

在这里插入图片描述

1.4 Docker Volume Command Help

[root@Tang-6 ~]# docker container run --help | grep volume
  -v, --volume list                    Bind mount a volume
      --volume-driver string           Optional volume driver for the container
      --volumes-from list              Mount volumes from the specified container(s)
[root@Tang-6 ~]# docker volume --help
[root@Tang-6 ~]# docker container volume --help

1.5 Docker Run Volume Command

# 为 docker run 命令使用 -v 选项即可使用 Volume

	# Docker-managed volume
		# docker  run  -it  -name bbox1–v /data  busybox
		# docker inspect -f {
   {
   .Mounts}} bbox1
			# 查看bbox1容器的卷、卷标识符及挂载的主机目录
			
	# Bind-mount Volume
		# docker run -it -v HOSTDIR:VOL
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值