Docker入门到实践 (四) docker容器数据卷与数据卷容器


一、前言

  在上一篇文章中已经介绍了Dockerfile解析与镜像制作, 下面正式进入到docker容器数据卷与数据卷容器。



二、容器数据卷

1、什么是容器数据卷

  docker的理念将运行的环境打包形成容器运行,运行可以伴随容器,但是我们对数据的要求是希望持久化,容器之间可以共享数据,Docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据作为容器的一部分保存下来,那么当容器被删除之后,数据也就没了,为了能够保存数据,在docker容器中使用卷。卷就是文件或者目录,存在于一个或者多个容器中,但是不属于联合文件系统,因此能够绕过Union File System提供一些用于持久化数据或共享数据的特点。

2、容器数据卷的作用与特性

  容器数据卷是一个特殊的文件或者目录,它将主机文件或者目录直接映射进容器中,可供一个或多个容器使用。容器数据卷设计的目的就是为了 数据的持久化,它完全独立与容器的生命周期。因此,容器删除时,不会删除其挂载的数据卷,也不会存在类似的垃圾机制对容器存在的数据卷进行处理。

容器数据卷的特性:

  • 数据卷可以在容器之间进行数据共享和重用
  • 对数据卷里的内容做更改不会影响镜像的更新
  • 对数据卷里的内容做修改,能直接生效,无论是在容器内操作还是本地操作
  • 数据卷的生命周期一直持续到没有容器使用它为止,即使挂载数据卷的容器已经被删除。
  • 数据卷在容器启动时初始化,如果容器使用的镜像在挂载点包含了数据,这些数据会拷贝到新初始化的数据卷中

3、容器数据卷的添加

方式一:通过命令添加数据卷
匿名目录挂载

匿名目录挂载只需要写容器内目录或者文件即可,而宿主机对应的目录会在/var/lib/docker/volumes路径下生成

//以交互模式运行容器,并使用-v 匿名挂载容器数据卷
docker run -it -v 容器内目录/文件的绝对路径[:rw/ro] -p 主机端口:容器端口 --name=容器名称 镜像ID/镜像名称[:版本号]

//以后台方式运行容器,并使用-v 匿名挂载容器数据卷 (推荐)
docker run -d -v 容器内目录/文件的绝对路径[:rw/ro] -p 主机端口:容器端口 --name=容器名称 镜像ID/镜像名称[:版本号]

//注意:如果出现Docker挂载宿主机目录显示cannot open directory .:Permission denied
解决办法:在挂载目录后面 多加一个--privileged=true参数即可

案例:使用centos容器内的 根目录 (/) 下的centosVolume目录 匿名挂载到宿主机中

1、创建并运行centos容器,同时匿名挂载数据卷

//这里没有使用--name=容器名称 去指定容器名称,则docker随机一个容器名称
docker run -it -v /centosVolume centos

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值