Docker 容器产生的数据在可写层,如果不通过 docker commit 生成新的镜像,使得数据成为镜像的一部分保存下来,那么当容器删除后,数据自然也就没有了。

Docker 提供了三种数据 Mount 方式:

这里主要记录 Volumes 方式,也就是图中的 Docker area,也是 Docker 推荐的方式。

卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此 Docker 不会在容器删除时删除其挂载的数据卷。

特点:

  • 数据卷可在容器之间共享或重用数据
  • 卷中的更改可以直接生效
  • 数据卷中的更改不会包含在镜像的更新中
  • 数据卷的生命周期一直持续到没有容器使用它为止

一、数据卷

# 类似于挂载目录
docker run -it -v /宿主机目录:/容器内目录 centos /bin/bash

可以看到这里把宿主机 /tmp 目录挂载到容器内 /home 目录了

也可以使用命令查看数据卷是否挂载成功。

docker inspect 容器ID

关于宿主机和容器之间数据同步

无论容器是运行还是停止,对宿主机的挂载目录所做的修改,在容器启动后都会映射到容器内对应目录。

同样的,在容器内,对挂载目录的操作都会映射到宿主机对应目录。

挂载目录权限

https://docs.docker.com/engine/reference/run/#volume-shared-filesystems

docker run -it -v /宿主机目录:/容器内目录:ro centos /bin/bash

二、数据卷容器

命名的容器挂载数据卷,其它容器通过挂载这个容器(父容器)实现数据共享,挂载数据卷的容器,称之为数据卷容器。

容器间传递共享:--volumes-from

docker run --name="cent0" -it -v /tmp:/home1 centos /bin/bash
docker run --name="cent1" -it -v /tmp:/home2 --volumes-from cent0 centos /bin/bash
docker run --name="cent2" -it -v /tmp:/home3 --volumes-from cent0 centos /bin/bash

创建三个容器

  • 第一个容器挂载 /tmp:/home,后面子容器挂载的目录不会影响父容器
  • 第二个容器基于第一个容器,且又挂载了 /tmp:/home2,所以可以看到两个目录:/home1、/home2
  • 第三个容器基于第一个容器,且又挂载了 /tmp:/home3,所以可以看到两个目录:/home1、/home3,与第二个容器无关

删除掉父容器再看子容器目录挂载情况

可以到删除父容器后不影响子容器的挂载目录。

结论:容器之间配置信息的传递,数据卷的生命周期一直持续到没有容器使用它为止。


https://docs.docker.com/storage/volumes/

https://docs.docker.com/engine/reference/commandline/run/

Docker 数据管理(Volumes)的更多相关文章

  1. Docker 数据管理-Volumes

    Volumes是Docker最为推荐的数据持久化方法. Volumes have several advantages over bind mounts: Volumes are easier to ...

  2. Docker数据管理

    用户在使用Docker的过程中,往往需要能查看容器内应用产生的数据,或者需要把容器内的数据进行备份,甚至多个容器之间进行数据共享,这必然涉及到Docker的数据管理. 容器中管理数据主要有两种方式: ...

  3. Docker数据管理(四)

    Docker数据管理 Docker数据分为两种: 数据卷 -v /data -v src:dst 数据卷容器 --volumes-from 数据卷 案例1:我们创建一个容器,起名叫nginx-volu ...

  4. Docker数据管理-数据卷 data volumes和数据卷容器data volumes containers的使用详解

    此文来源于:https://yq.aliyun.com/ziliao/43471 参考原文件之外,做了些修改. Volume数据卷是Docker的一个重要概念.数据卷是可供一个或多个容器使用的特殊目录 ...

  5. Docker系统七:Docker数据管理

    Docker的数据管理 I. 基本概念 Docker容器一旦删除,其相关的rootf文件系统就会被删除,其容器内的数据将一并删除,为了保存相关数据,Docker提出了数据卷的概念. II. 数据卷 D ...

  6. Docker数据管理(数据卷&数据卷容器)

    生产环境中使用Docker的过程中,往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,这必然涉及容器的数据管理操作. 容器中管理数据主要有两种方式: 数据卷(Data Volumes):容 ...

  7. 【Docker】第五篇 Docker 数据管理

    一.基本介绍 数据管理的原因:Docker中的容器一旦删除,容器本身的rootfs文件系统就会被删除,容器中的所有数据就会被删除.为了对一些需要持久化的数据,不随容器删除而删除,所以我们可以通过多个容 ...

  8. 六、【Docker笔记】Docker数据管理

    前几节我们介绍了Docker的基本使用和三大核心概念,那么我们在使用Docker的过程中,Docker中必然产生了大量的数据,对于这些数据我们需要查看或者对这些数据进行一个备份,也有可能容器之间的数据 ...

  9. Docker数据管理(五)

    一.什么是数据卷 生成环境中使用docker的过程中,往往需要对数据进行持久化,或者需要多个容器之间进行数据共享,这个就涉及到了容器数据管理 容器中管理数据主要有两种方式: 数据卷:容器内数据之间映射 ...

随机推荐

  1. css3控制字体动态变换颜色

    css3控制字体动态变换颜色 <!doctype html> <html> <head> <meta charset="utf-8"> ...

  2. 安装CDH5.11.2集群

    master  192.168.1.30 saver1  192.168.1.40 saver2  192.168.1.50 首先,时间同步 然后,ssh互通 接下来开始: 1.安装MySQL5.6. ...

  3. 操作xml文件

    http://www.cnblogs.com/ 一.xml文件体系如下: <?xml version="1.0" encoding="utf-8" ?&g ...

  4. Error:Execution failed for task ':app:compileDebugJavaWithJavac'

    百度一下呗 查找了各种解决方案,都不对症. 最后发现,造成这种异常的原因有很多.具体的还是要去终端编译,查看到底是什么地方出错了,然后具体问题具体分析. 终端进入项目的根目录,然后输入命令 ./gra ...

  5. 《数据结构与算法之美》 <02>复杂度分析(下):浅析最好、最坏、平均、均摊时间复杂度?

    上一节,我们讲了复杂度的大 O 表示法和几个分析技巧,还举了一些常见复杂度分析的例子,比如 O(1).O(logn).O(n).O(nlogn) 复杂度分析.掌握了这些内容,对于复杂度分析这个知识点, ...

  6. 关于rtos中任务切换时的程序流程

    今天和一个小伙伴讨论了一下基于cortex-m3内核的RTOS在任务切换时的程序流程,小伙伴说国内某搜索引擎都搜不到这类的信息,所以我才打算写下来,硬件平台是stm32f1​. 这里的切换有两种情况: ...

  7. Hadoop_17_MapRduce_案例2_实现用户手机流量统计(ReduceTask并行度控制)

    需求:1.统计每一个用户(手机号)所耗费的总上行流量.下行流量,总流量 1.数据如下:保存为.dat文件(因为以\t切分数据,文件格式必须合适) 1363157985066 13726230503 0 ...

  8. java——maven依赖版本冲突

    博客:maven依赖jar包时版本冲突的解决

  9. luogu3651 展翅翱翔之时 (はばたきのとき)[基环树+贪心]

    考前随便做点水题愉♂悦身心 有助于退役 这题意思其实就是说要把外向基环树森林改成一个环的最小代价. 依照套路,先对每棵基环树的树做dp,这里因为要是环,要把所有的树都拆成链,然后连接.所以考虑以最小代 ...

  10. Java队列与栈转换中String.Valueof()使用

    1. 由 基本数据型态转换成 String String 类别中已经提供了将基本数据型态转换成 String 的 static 方法 也就是 String.valueOf() 这个参数多载的方法 有下 ...