Docker 数据管理(Volumes)
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)的更多相关文章
- Docker 数据管理-Volumes
Volumes是Docker最为推荐的数据持久化方法. Volumes have several advantages over bind mounts: Volumes are easier to ...
- Docker数据管理
用户在使用Docker的过程中,往往需要能查看容器内应用产生的数据,或者需要把容器内的数据进行备份,甚至多个容器之间进行数据共享,这必然涉及到Docker的数据管理. 容器中管理数据主要有两种方式: ...
- Docker数据管理(四)
Docker数据管理 Docker数据分为两种: 数据卷 -v /data -v src:dst 数据卷容器 --volumes-from 数据卷 案例1:我们创建一个容器,起名叫nginx-volu ...
- Docker数据管理-数据卷 data volumes和数据卷容器data volumes containers的使用详解
此文来源于:https://yq.aliyun.com/ziliao/43471 参考原文件之外,做了些修改. Volume数据卷是Docker的一个重要概念.数据卷是可供一个或多个容器使用的特殊目录 ...
- Docker系统七:Docker数据管理
Docker的数据管理 I. 基本概念 Docker容器一旦删除,其相关的rootf文件系统就会被删除,其容器内的数据将一并删除,为了保存相关数据,Docker提出了数据卷的概念. II. 数据卷 D ...
- Docker数据管理(数据卷&数据卷容器)
生产环境中使用Docker的过程中,往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,这必然涉及容器的数据管理操作. 容器中管理数据主要有两种方式: 数据卷(Data Volumes):容 ...
- 【Docker】第五篇 Docker 数据管理
一.基本介绍 数据管理的原因:Docker中的容器一旦删除,容器本身的rootfs文件系统就会被删除,容器中的所有数据就会被删除.为了对一些需要持久化的数据,不随容器删除而删除,所以我们可以通过多个容 ...
- 六、【Docker笔记】Docker数据管理
前几节我们介绍了Docker的基本使用和三大核心概念,那么我们在使用Docker的过程中,Docker中必然产生了大量的数据,对于这些数据我们需要查看或者对这些数据进行一个备份,也有可能容器之间的数据 ...
- Docker数据管理(五)
一.什么是数据卷 生成环境中使用docker的过程中,往往需要对数据进行持久化,或者需要多个容器之间进行数据共享,这个就涉及到了容器数据管理 容器中管理数据主要有两种方式: 数据卷:容器内数据之间映射 ...
随机推荐
- 小程序 wxs时间戳转字符串
function formatDate(value) { //不能使用 new Date() var time = getDate(value); var year = time.getFullYea ...
- .NET 反射应用
object request = null; string requestObjClassName = "命名空间" + 类型.ToString(); Type type = Ty ...
- 数据库 master拒绝了 create database 权限
1.通过windows身份验证方式登录 2.为登录名赋予服务器角色权限,其中dbcreator权限表示允许新增和修改权限,sysadmin权限是管理员权限,包含dbcreator范围,若不追求权限精准 ...
- element 文件上传大小控制
1.页面代码 <el-upload :show-file-list="false" class="upload-demo" :before-upload= ...
- java——从.net再学习java
到底从java中学到了什么? 1,java是由sun公司发明的,sun希望制定一些标准,具体的实现交给具体的厂商来自己实现: 2,java是开源的,第三方做了很多自己的一些组件实现,比如: 很多时候, ...
- HashMap源码分析四
HashMap源码在jdk1.8中,改动挺大,里面内容已经变的非常复杂了,后面另起博客分析.jdk1.8以前,HashMap一直是数组加链表的数据结构,在数组的某个下标位置,有多次碰撞,则使用 ...
- stat /var/lib/docker/tmp/docker-builder234542842/usr/local/resource/noah_init.sql
参考:https://blog.csdn.net/andrew_wf/article/details/85202511 将noah_init.sql放到与Dockerfile同一目录
- Spring-简介-IOC理论推导
1.Spring 1.1.简介 Spring:春天----->给软件行业带来了春天! 2002,首次推出了Spring框架的雏形:interface21框架! Spring框架即以interfa ...
- python_tkinter组件摆放方式
1.最小界面组成 # 导入tkinter模块 import tkinter # 创建主窗口对象 root = tkinter.Tk() # 设置窗口大小(最小值:像素) root.minsize(30 ...
- python改成了python3的版本,那么这时候yum就出问题了
既然把默认python改成了python3的版本,那么这时候yum就出问题了,因为yum貌似不支持python3,开发了这个命令的老哥也不打算继续写支持python3的版本了,所以,如果和python ...