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. vue.js devtools图标不亮

    第一步:打开谷歌扩展程序 第二步:设置允许访问文件地址

  2. linux 下使用 VirtualBox 搭建集群环境

    参考文章: https://www.nakivo.com/blog/virtualbox-network-setting-guide/ https://help.ubuntu.com/lts/serv ...

  3. Centos7.7安装expect命令工具

    简单介绍 expect是一个免费的编程工具,用来实现自动的交互式任务,而无需人为干预.说白了,expect就是一套用来实现自动交互功能的软件. 在实际工作中,我们运行命令.脚本或程序时,这些命令.脚本 ...

  4. mysql中binglog底层原理分析

    binglog 是一个二进制的日志文件,会记录mysql的数据更新或潜在个跟新 (delete from table where id =xxx) 主从复制就是依靠binglog master -sl ...

  5. composer安装学习

    Packagist 镜像 网站地址 http://www.phpcomposer.com/ 请各位使用本镜像的同学注意: 本镜像已经依照 composer 官方的数据源安全策略完全升级并支持 http ...

  6. Flutter——Column组件(垂直布局组件)

    Column组件的常用属性 属性 说明 mainAxisAlignment 主轴的排序方式 crossAxisAlignment 次轴的排序方式 children 组件子元素 import 'pack ...

  7. 解决故障码400,“”The plain HTTP request was sent to HTTPS port“”

    Nginx HTTP服务器的报错"400 Bad Request: The plain HTTP request was sent to HTTPS port",本文将讲解如何解决 ...

  8. 七:mvc使用CodeFirst(代码优先)创建数据库

    1. 理解EF CodeFirst模式特点 2. 使用CodeFirst模式生成数据库 1. CodeFirst模式(代码优先) Code First是Entity Framework提供的一种新的编 ...

  9. iFrame跨域的方式

    4种通过iframe跨域与其他页面通信的方式 不同域下的iframe不能进行操作. 1.location.hash: 在url中,http://www.baidu.com#helloword的#hel ...

  10. Windows环境下使用uiautomatorviewer进行元素定位

    一.摘要 元素定位本篇主要介绍如何使用uiautomatorviewer,通过定位到页面上的元素,然后进行相应的点击等操作,uiautomatorviewer 是 android-sdk 自带的一个元 ...