打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
docker -v 和Dockerfile 中VOLUME 区别

在学习Dockerfile的过程中有个VOLUME命令,很多教程或书中说的是用来定义匿名卷的,其作用如下:
  容器运行时应该尽量保持容器存储层不发生写操作,对于数据库类需要保存动态数据的应用,其数据库文件应该保存于卷(volume)中。为了防止运行时用户忘记将动态文件所保存目录挂载为卷,在Dockerfile 中,我们可以事先指定某些目录挂载为匿名卷,这样在运行时如果用户不指定挂载,其应用也可以正常运行,不会向容器存储层写入大量数据。

这令我们想起docker的run命令中的 "-v"参数的作用

# docker 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

那么Dockerfile中的VOLUME指令实际使用中是不是就是跟docker run中的-v参数一样是将宿主机的一个目录绑定到容器中的目录以达到共享目录的作用呢?
并不然,其实VOLUME指令只是起到了声明了容器中的目录作为匿名卷,但是并没有将匿名卷绑定到宿主机指定目录的功能。
但是当我们生成镜像的Dockerfile中以Volume声明了匿名卷,并且我们以这个镜像run了一个容器的时候,docker会在安装目录下的指定目录下面生成一个目录来绑定容器的匿名卷(这个指定目录不同版本的docker会有所不同)。如我使用的版本如下:

# docker --versionDocker version 18.09.0, build 4d60db4    //docker版本# pwd/var/lib/docker/volumes          //默认绑定容器的匿名卷的目录# lltotal 32drwxr-xr-x. 3 root root  4096 Nov 25 20:18 593fda6d7b8296bfca22894b326727c734133eebb11c9bc2c25a73b892157a37  //其中一个容器的共享目录文件夹drwxr-xr-x. 3 root root  4096 Nov 25 20:14 78d890eeb15ac6295484d5e84e97928e981b01501fa40bac40b965fc9e54899a  //其中一个容器的共享目录文件夹-rw-------. 1 root root 32768 Nov 25 20:18 metadata.db

就是说当Dockerfile中声明了匿名卷,但是run的时候没有使用-v绑定匿名卷的话,那么docker就会在/var/lib/docker/volumes这个目录下创建一个目录来绑定匿名卷。
所以真正使用的时候我们在Dockerfile构建镜像的时候如:

FROM centos:latestRUN groupadd -r redis && useradd  -r -g redis redisRUN yum -y update &&  yum -y install epel-release && yum -y install redis && yum -y install net-toolsRUN mkdir -p /config && chown -R redis:redis /configVOLUME /share/data      #声明容器中/share/data为匿名卷EXPOSE 6379

那么使用该Dockerfile构建镜像的为

# docker build -t image-redis    //构建镜像image-redis......#docker run -d -it -name redis1 -v /data:/share/data image-redis    //运行一个容器并且将当前机器的/data目录绑定到容器的匿名卷中.....#docker run -d -it  -name redis2 image-redis   //运行一个容器但是不绑定目录到容器的匿名卷,这时候再/var/lib/docker/volumes(不同版本目录不一样)中就会创建一个目录绑定匿名卷
来源:https://www.icode9.com/content-4-714601.html
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
docker学习笔记
整理了一份 Docker系统知识,从安装到熟练操作看这篇就够了 | 原力计划
docker入门
Docker容器学习梳理--基础知识(2)
docker学习(四)
Docker 深入浅出
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服