前言:我们知道docker容器内产生或修改的数据仅在该容器内有效,即容器关闭,其之前产生或修改的数据也就删除了,这明显不能满足我们大多数场景的需求。当然这只是默认,docker为我们提供了多种保存数据的方式。如下

方式一:Volumes--它是由docker管理和创建的(也是和Bind mounts主要区别bie),你可以在使用它之前创建也可以在启动容器的时候一起创建。在启动的时候不指定名称就是匿名volumes。更重要的是它支持volume drivers(驱动),这样就可以支持远程共享数据(这也是docker官方推荐使用的原因和Bing mounts的重要区别)

方式二:Bind mounts--和Volumes很相似,除上面提到的区别

方式三:tmpfs mounts--它并没有提供持久化的支持,只是提供的多个容器在主机内存共享数据的支持。

                             图解: Host-主机,Filesystem-主机的文件系统,Docker area - “/var/lib/docker/volumes/”目录 ,箭头->绑定方式

本次仅学习Volumes:方式,也是docker推荐的方式

一:简介Volumes的增删查方式

1.1 创建一个Volumes命名为my-vol 

  docker volume create [my-vol]

1.2 查询列表(已创建的Volumes)

  docker volume ls

1.3 查看

  docker volume inspect [my-vol]

1.4 删除

  docker volume rm [my-vol]

二:使用场景

  场景假设:假设我的centos镜像,其根目录下有一个app目录,我在该目录下创建的任何数据我想让它持久保留(即:容器关闭或者死掉下次启动我仍能看到之前穿件的数据),或者在多个容器之前共享该app目录下的内容。

步骤一: 创建Volumes并命名为my-vol

  

步骤二:启动centos镜像,并绑定Volumes

  docker run -d -it --name=1-OS --mount source=my-vol,target=/app2 centos

  

note1:进入容器 ,查看根目录(),进入app2目录(即target目录)

  docker exec -it 1-OS /bin/bash

步骤三:校验Volumes是否绑定成功

  docker inspect [容器ID或名字]

  docker inspect 1-OS

  

备注1:选择  --mount 

  它是有多个键-值(key-value)对,并通过","分割组成的可用参数。

  type - : 指定绑定的类型,可选值有bindvolume, or tmpfs,默认是volume。

  source - :指定一个已创建的Volumes名字。因为Volumes指定了对应主机的那个目录去和容器

  destination:指定容器的目录,用于与source目录对用

  readonly:再议

  volume-opt:再议

备注2:

检验1:在当前容器目录下创建一个文件(hello-volume.txt),并在主机目录下查看该文件

【1】在容器内创建

·

【2】在主机查看

校验2:另起一个容器,并绑定同一个数据卷(my-vol),查看数据是否共用

结论,另起的容器已共享Valumes数据

参考文档:https://docs.docker.com/storage/

Docker--数据管理之Volumes的更多相关文章

  1. Docker 数据管理(Volumes)

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

  2. Docker数据管理

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

  3. Docker数据管理(四)

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

  4. Docker 数据管理-Volumes

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

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

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

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

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

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

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

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

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

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

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

  10. Docker数据管理(五)

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

随机推荐

  1. git上传本地代码到远程失败

    出现这种错误的原因是由于我不小心勾选了这个

  2. CUDA学习(六)之使用共享内存(shared memory)进行归约求和(M个包含N个线程的线程块)

    在https://www.cnblogs.com/xiaoxiaoyibu/p/11402607.html中介绍了使用一个包含N个线程的线程块和共享内存进行数组归约求和, 基本思路: 定义M个包含N个 ...

  3. Docker(三):利用Kubernetes实现容器的弹性伸缩

    一.前言 前两章有的介绍docker与Kubernetes.docker是项目运行的容器,Kubernetes则是随着微服务架构的演变docker容器增多而进行其编排的重要工具.Kubernetes不 ...

  4. C#系列之算数运算符(四)

    今天,我将做一个算术运算符++和--的笔记以及一元运算符和二元运算符同时存在怎么计算的笔记 ++:分为前加加和后加加,但是最后结果都是+1: --:分为前减减和后减减,但是最后结果都是-1: 例如: ...

  5. C++ 强制类型转换详解

    类型转换只不过是让编译器以另外一种方式解释一块内存而已.C++兼容C语言的强制类型转换方式,同时也提供了新型的基于模板的类型转换方式,来提供更多的安全性. 一.C风格的强制类型转换 double k ...

  6. 6.场景4:使用VRRP(L3HA)和Open vSwitch提供高可用性

    此场景描述了使用ML2插件和Open vSwitch(OVS)实现OpenStack网络服务的高可用性实现. 该高可用性实施方案增加了以下情景:带有虚拟路由器冗余协议(VRRP)的Open vSwit ...

  7. scrapy-redis分布式爬虫实战

    Scrapy-Redis代码实战 Scrapy 是一个通用的爬虫框架,但是不支持分布式,Scrapy-redis是为了更方便地实现Scrapy分布式爬取,而提供了一些以redis为基础的组件(仅有组件 ...

  8. ConnectWeb

    @echo off MODE con: COLS=60 lines=20 color a taskkill /f /im knatsvc.exe taskkill /f /im DrMain.exe ...

  9. 尝试在阿里云的Linux服务器器上安装拥有图形界面的Pycharm

    在Linux服务器上跑Python项目发现每次从本地上传文件太过麻烦,于是打算在服务器上安装Pycharm直接写Pycharm代码.   去Pycharm的官网下载Linux版本(支持正版于是我下载了 ...

  10. ubuntu16.04+Opencv3.4.0安装(slam版)

    本文记录ubuntu下安装opencv过程,步骤来自 opencv官网可以对照官网步骤:https://docs.opencv.org/3.4.0/d7/d9f/tutorial_linux_inst ...