ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Docker核心原理之数据卷

2022-05-15 11:01:43  阅读:173  来源: 互联网

标签:容器 核心 宿主机 目录 原理 Docker 数据 docker


  什么是数据卷呢?Docker将应用与运行环境打包成容器发布,在运行过程钟产生的部分数据是可以持久化的的,而且容器之间通常希望能够实现数据共享。这些数据文件在删除docker容器时也随之删除,但是其中产生的部分内容在实际生产中可能需要保存起来另有用途。数据卷(Data Volumes)就是是一个可供一个或多个容器使用的特殊目录,它将主机操作系统目录直接映射进容器——这样就能保证这些数据不会随着容器的删除而删除。

  docker容器数据卷可以看成使我们生活中常用的u盘,它存在于一个或多个的容器中,由docker挂载到容器,但不属于联合文件系统,Docker不会在容器删除时删除其挂载的数据卷。其特点如下:

    1、数据卷可以在容器之间共享或重用数据
    2、数据卷中的更改可以立即生效
    3、数据卷中的更改不会包含在镜像的更新中
    4、数据卷默认会一直存在,即使容器被删除
    5、数据卷的生命周期一直持续到没有容器使用它为止

  数据卷可以分为三种类型:

    1)宿主机数据卷:直接在宿主机的文件系统中但是容器可以访问(bind mount)

    2)命名的数据卷:磁盘上Docker管理的数据卷,但是这个卷有个名字。

    3) 匿名数据卷:磁盘上Docker管理的数据卷,因为没有名字想要找到不容易,Docker来管理这些文件。

  数据卷其实都在(如果没有网络文件系统等情况下)宿主机文件系统里面的,只是第一种是在宿主机内的特定目录下,而后两种则在docker管理的目录下,这个目录一般是 /var/lib/docker/volumes/

  对数据卷的管理,容器中主要提供以下两种方式:
    1、数据卷:Data Volumes 容器内数据直接映射到本地主机环境
    2、数据卷容器:Data Volume Containers 使用特定容器维护数据卷
  当然也可以使用最原始的copy方式:cp命令——用于容器与主机之间的数据拷贝。使用方法如下:

    宿主机文件复制到容器内:docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH

    容器内文件复制到宿主机:docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH

    具体可以参考Docker工具之docker-compose应用实践~Nginx反向代理 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)

  下面就进行数据卷类型分类进行实操:

  CentOS8 启动后警告boot空间不足 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)实操可知操作系统提供对硬件挂载和解挂的命令mount和umount。同样docker对数据卷也提供类似命令功能,比如:docker run -v /宿主机绝对路径目录:/容器内目录 镜像名

  需要注意的是,不仅docker run 提供该功能,create/start也提供该功能参数。但是挂载数据卷,最好是通过run而非create/start创建启动容器,create/start命令创建启动容器后,再挂载数据卷相当麻烦,要修改很多配置文件,但并非不可以。同时docker官网推荐尽量进行目录挂载,不要进行文件挂载。

  宿主机数据卷实操:(nginx)通过 -v 容器内路径: ro rw 改变读写权限(ro:readonly 只读,rw:readwrite 可读可写)

    docker run -it -v /宿主机绝对路径目录:/容器内目录:(ro 镜像名|rw 镜像名)

  命名的数据卷实操:

  匿名数据卷实操:

 

  

未完,待续……

 

标签:容器,核心,宿主机,目录,原理,Docker,数据,docker
来源: https://www.cnblogs.com/ilovebath/p/16189795.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有