docker-数据管理(3)
Docker 容器中管理数据主要有两种方式:
- 数据卷(Data volumes)
- 数据卷容器(Data volumes containers
数据卷是一个可供一个或者多个容器使用的特殊目录,它绕过UFS,可以提供很多有用的特性:
- 数据卷可以在容器之间共享和重用
- 对数据卷的修改会立马生效
- 对数据卷的更新,不会影响镜像
- 数据卷默认会一直存在,即时容器被删除
[root@server ~]# docker volume create myvolume #创建一个数据卷
myvolume
[root@server ~]# docker volume inspect myvolume #查看数据卷的信息
[root@server ~]# docker run -d -it --name myCentos --mount src=myvolume,dst=/data centos #创建一个myCentos容器,并将myvolume数据卷挂载到myCentos容器的/data目录
[root@server ~]# docker exec -it myCentos /bin/bash #进入容器
[root@8f3094a730af /]# echo “hello” > /data/test.txt
#查看文件
[root@server ~]# cd /var/lib/docker/volumes/myvolume/_data #在另外一个终端进入到数据目录里面
[root@server ~]# more test.txt
此时开启另外一个终端再次创建一个容器,并且挂载同样的数据卷,可以发现这种方式可以在容器之间共享和重用 [root@server ~]# docker run -d -it --name myCentos01 --mount src=myvolume,dst=/data centos #新开一个终端创建新的一个容器,挂载同样的数据卷
[root@server ~]# docker exec -it myCentos01 /bin/bash
[root@45c3ca27ddad /]# ls /data/
使用 -v 参数也可以指定挂载一个本地主机的目录到容器中
[root@server ~]# docker run -d -ti --name web -v /webapp:/opt/webapp centos #创建一个名字叫web的容器,并且将宿主机的/webapp目录 挂载到容器的/opt/webapp目录
[root@server ~]# ls /webapp/ #查看宿主机的目录,如果没有该目录,会自动创建
[root@server ~]# echo "hello" >> /webapp/index.html #追加一个文件进去
[root@server ~]# docker exec -ti web /bin/bash #进入容器
[root@16c66fe42017 /]# cat /opt/webapp/index.html #查看容器/opt/webapp目录下的数据
数据卷容器
如果有一些持续更新的数据需要在容器之间共享,最好创建数据卷容器。数据卷容器其实就是一个正常的容器,专门用来提供数据卷供其它容器挂载的。
[root@server ~]# docker run -d -v /dbdata --name dbdata centos #创建一个数据卷容器 [root@server ~]# docker run -d -it --volumes-from dbdata --name db1 centos #创建一个db1容器, 使用 --volumes-from 来挂载 dbdata 容器中的数据卷
[root@server ~]# docker exec -it db1 /bin/bash #进入db1容器中
[root@1863842f0c16 /]# ls #查看已成功挂载dbdata数据卷
anaconda-post.log dbdata etc lib media opt root sbin sys usr
bin dev home lib64 mnt proc run srv tmp var
[root@1863842f0c16 /]# touch dbdata/file1 #在dbdata目录中创建一个文件 [root@server ~]# docker run -d -it --volumes-from dbdata --name db2 centos #再创建一个db2容器,使用 --volumes-from 来挂载 dbdata 容器中的数据卷
[root@server ~]# docker exec -it db2 /bin/bash #进入db2容器中
[root@0fca0699a7c7 /]# ls #查看也成功挂载dbdata数据卷
anaconda-post.log dbdata etc lib media opt root sbin sys usr
bin dev home lib64 mnt proc run srv tmp var
[root@0fca0699a7c7 /]# ls dbdata/ #并且还查看到了db1容器创建的file1文件,说明容器之间的数据共享了
file1 另外还可以级联创建
[root@server ~]# docker run -d -ti --name db3 --volumes-from db1 centos #创建一个db3容器,通过 --volumes-from 级联挂载上面的db1容器 级联删除:
注意:如果删除了挂载的容器(包括dbdata、db1和db2),数据卷也不会被自动删除。如果要删除一个数据卷,必须在删除最后一个还挂载着它的容器时使用 docker rm -v 命令来指定同时删除关联的容器。
docker-数据管理(3)的更多相关文章
- Docker数据管理(四)
Docker数据管理 Docker数据分为两种: 数据卷 -v /data -v src:dst 数据卷容器 --volumes-from 数据卷 案例1:我们创建一个容器,起名叫nginx-volu ...
- Docker数据管理
用户在使用Docker的过程中,往往需要能查看容器内应用产生的数据,或者需要把容器内的数据进行备份,甚至多个容器之间进行数据共享,这必然涉及到Docker的数据管理. 容器中管理数据主要有两种方式: ...
- Docker系统七:Docker数据管理
Docker的数据管理 I. 基本概念 Docker容器一旦删除,其相关的rootf文件系统就会被删除,其容器内的数据将一并删除,为了保存相关数据,Docker提出了数据卷的概念. II. 数据卷 D ...
- Docker数据管理(五)
一.什么是数据卷 生成环境中使用docker的过程中,往往需要对数据进行持久化,或者需要多个容器之间进行数据共享,这个就涉及到了容器数据管理 容器中管理数据主要有两种方式: 数据卷:容器内数据之间映射 ...
- Docker数据管理(数据卷&数据卷容器)
生产环境中使用Docker的过程中,往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,这必然涉及容器的数据管理操作. 容器中管理数据主要有两种方式: 数据卷(Data Volumes):容 ...
- Docker实战(四)之Docker数据管理
在生产环境中使用Docker的过程中,往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,这必然涉及到容器的数据管理操作. 容器中管理数据主要有两种形式: 数据卷:容器内数据直接映射到本地主 ...
- 【Docker】第五篇 Docker 数据管理
一.基本介绍 数据管理的原因:Docker中的容器一旦删除,容器本身的rootfs文件系统就会被删除,容器中的所有数据就会被删除.为了对一些需要持久化的数据,不随容器删除而删除,所以我们可以通过多个容 ...
- <Docker学习>5. docker数据管理
当我们创建了一个tomcat容器,如何简单部署一个web应用?如何将war包放入到容器中?也就是说怎么样把文件从宿主机中 "放入" 到容器中? docker cp命令可以将宿主机本 ...
- docker数据管理(2)
一.docker存储资源类型 docker两种存储资源类型 用户在使用 Docker 的过程中,势必需要查看容器内应用产生的数据,或者需要将容器内数据进行备份,甚至多个容器之间进行数据共享,这必然会涉 ...
- 六、【Docker笔记】Docker数据管理
前几节我们介绍了Docker的基本使用和三大核心概念,那么我们在使用Docker的过程中,Docker中必然产生了大量的数据,对于这些数据我们需要查看或者对这些数据进行一个备份,也有可能容器之间的数据 ...
随机推荐
- nginx代理图片上传以及访问
nginx代理图片上传 首先需要利用nginx代理图片访问参考 https://www.cnblogs.com/TJ21/p/12609017.html 编写接受文件的controller @Post ...
- c#的全局异常捕获
以下操作在Program.cs中 1.最简单的方式try...catch.. 一般用在某一段容易出错的代码,如果用在整个软件排查,如下所示 static void Main() { try { App ...
- STM32F103ZET6的基本定时器
1.定时器的分类 STM32F103ZET6总共有8个定时器,它们是:TIM1~TIM8.STM32的定时器分为基本定时器.通用定时器和高等定时器. TIM6.TIM7是基本定时器.基本定时器是只能向 ...
- LeetCode | 1013. 将数组分成和相等的三个部分
给定一个整数数组 A,只有我们可以将其划分为三个和相等的非空部分时才返回 true,否则返回 false. 形式上,如果我们可以找出索引i+1 < j且满足(A[0] + A[1] + ... ...
- go 错误处理与测试
Go 没有像 Java 和 .NET 那样的 try/catch 异常机制:不能执行抛异常操作.但是有一套 defer-panic-and-recover 机制(参见 13.2-13.3 节). Go ...
- Java第四天,随机数如何生成?ArrayList如何使用?
虽然很多时候我们查阅Java API文档,但是对于一些必要的类,我们还是需要去了解的.因为这样的情况下,我们就可以尽量的去缩短开发的周期.接下来我们认识一下哪些API类是必须熟记的. Random 这 ...
- Python Request-学习笔记(1)
#导入Requests模块:import requests # 然后,尝试获取某个网页.返回的是reaponse对象,可以从这个对象中获取所有我们想要的信息.response = requests.g ...
- poj3585 Accumulation Degree(换根dp)
传送门 换根dp板子题(板子型选手 题意: 一棵树确定源点和汇点找到最大的流量(拿出一整套最大瘤板子orz ; int head[maxn],tot; struct node { int nt,to; ...
- 数据库里账号的密码,需要怎样安全的存放?—— 密码哈希(Password Hash)
最早在大学的时候,只知道用 MD5 来存用户的账号的密码,但其实这非常不安全,而所用到的哈希函数,深入挖掘,也发现并不简单-- 一.普通的 Hash 函数 哈希(散列)函数是什么就不赘述了. 1.不推 ...
- 15.ASP.NET Core 应用程序中的静态文件中间件
在这篇文章中,我将向大家介绍,如何使用中间件组件来处理静态文件.这篇文章中,我们讨论下面几个问题: 在ASP.NET Core中,我们需要把静态文件存放在哪里? 在ASP.NET Core中 wwwr ...