Docker之数据管理

本文涉及的产品
数据管理 DMS,安全协同 3个实例 3个月
推荐场景:
学生管理系统数据库
简介: Docker之数据管理

生产中使用Docker,通常需要数据持久化或容器间数据共享,所以需要对数据进行管理。

容器中的数据管理方式主要有两种:

  • 数据卷(Data Volumes):容器内数据映射到本地主机环境
  • 数据卷容器(Data Volumes Containers):使用特定容器维护数据——————————————————————————————

数据卷:

数据卷是一个可供容器使用的特殊目录,它将宿主机目录直接映射进容器,类似于linux中的mount操作。

数据卷特性:

  • 可以再容器之间共享和重用,使数据传递变得高效与便捷
  • 对数据卷中数据修改会即刻生效,无论在本地还是容器内操作
  • 对数据卷的更新不会影响镜像
  • 卷会一直存在,直到没有容器使用,可以安全的卸载掉

创建数据卷:

[root@docker01 ~]# docker volume create -d local test
test
[root@docker01 ~]# ls -l /var/lib/docker/volumes/
drwxr-xr-x 3 root root    19 5月   9 15:33 test

例:运行一个容器,将数据卷挂在到容器内

[root@docker01 ~]# docker run -d -p 80:80 --name web -v test:/usr/share/nginx/html nginx

创建的数据卷将存放在/var/lib/docker/volumes/目录下。

除create(创建)命令外,docker volume还支持以下常用命令:

  • inspect :查看详细信息
  • ls :列出已有数据卷
  • prune :清空无用数据卷
  • rm:删除数据卷

绑定数据卷:

将宿主机本地目录挂在到容器内作为数据卷,这种方式的数据卷称为绑定数据卷

在启动容器的时候可以使用-mount选项使用数据卷。

-mount选项支持三中类型数据卷:

  • volume:普通数据卷,映射到主机/var/lib/docker/volumes/路径下
  • bind:绑定数据卷,映射到主机指定路径
  • tmpfs:临时数据卷,存在于内存中
  • 例:创建一个web容器,并创建一个数据卷挂在到容器的/opt/webapp下
[root@docker01 ~]# docker run -d -P --name web02 -v /webapp:/opt/webapp training/webapp python app.py

本地目录的路径要求绝对路径,容器内路径没有要求。

如果目录不存在,Docker会自行创建。

Docker挂载数据卷默认权限是读写(rw),也可以更改为只读(ro):

[root@docker01 ~]# docker run -d -P --name web02 -v /webapp:/opt/webapp:ro training/webapp python app.py

数据卷容器:

数据卷容器也是一个容器,作用是专门为其他容器提供数据卷。

创建数据卷容器:

[root@docker01 ~]# docker run -d -v /data --name data ubuntu

其他容器可以使用- -volumes-from来挂载data容器下的数据卷:

[root@docker01 ~]# docker run -ti --volumes-from data --name db1 ubuntu
root@7c45c23ecf2e:/# ls
bin   data  etc   lib    lib64   media  opt   root  sbin  sys  usr
boot  dev   home  lib32  libx32  mnt    proc  run   srv   tmp  var
root@7c45c23ecf2e:/# ls data/
[root@docker01 ~]# docker run -ti --volumes-from data --name db2 ubuntu
root@bdbfc58dd172:/# ls
bin   data  etc   lib    lib64   media  opt   root  sbin  sys  usr
boot  dev   home  lib32  libx32  mnt    proc  run   srv   tmp  var
root@bdbfc58dd172:/# cd data/
root@bdbfc58dd172:/data# touch test.txt

经过在db2容器内/data目录创建test.txt文件后在db1中查看,可以看到数据共享:

root@7c45c23ecf2e:/# ls data/
test.txt

如果删除了挂载的容器,数据卷并不会自动删除,必须在删除最后一个还挂载这它的容器时显示docker rm -v命令来指定同时删除关联的容器。

数据卷容器迁移数据:

备份:

[root@docker01 backup]# docker run --volumes-from dbdata -v ${PWD}:/backup --name worker ubuntu tar cvf /backup/backup.tar /dbdata
/dbdata/
/dbdata/test.txt
tar: Removing leading `/' from member names
[root@docker01 backup]# ls
backup.tar

解释:

  • –volumes-from dbdata:worker容器挂载dbdata容器的数据卷
  • -v ${PWD}:/backup:将本地的当前目录挂载到容器的/backup下
  • tar cvf /backup/backup.tar /dbdata:备份数据/dbdata目录为/backup目录下的backup.tar包

恢复:

创建一个带有数据卷的容器dbdata2:

[root@docker01 backup]# docker run -v /dbdata --name dbdata2 ubuntu /bin/bash

创建另一个新容器,挂载dbdata2的容器,并使用untar解压备份文件到所挂的容器卷内:

[root@docker01 backup]# docker run -ti --rm --volumes-from dbdata2 -v ${PWD}:/backup ubuntu tar xvf /backup/backup.tar
dbdata/
dbdata/test.txt

启动一个新容器,进入容器内部查看,数据已存在:

[root@docker01 ~]# docker run -ti --rm --volumes-from dbdata2 --name web ubuntu /bin/bash
root@81baa2189c21:/# ls
bin   dbdata  etc   lib    lib64   media  opt   root  sbin  sys  usr
boot  dev     home  lib32  libx32  mnt    proc  run   srv   tmp  var
root@81baa2189c21:/# ls dbdata/
test.txt

此部分内容到此结束

相关实践学习
MySQL基础-学生管理系统数据库设计
本场景介绍如何使用DMS工具连接RDS,并使用DMS图形化工具创建数据库表。
目录
相关文章
|
1月前
|
SQL 关系型数据库 数据库
国产数据实战之docker部署MyWebSQL数据库管理工具
【10月更文挑战第23天】国产数据实战之docker部署MyWebSQL数据库管理工具
127 4
国产数据实战之docker部署MyWebSQL数据库管理工具
|
1月前
|
关系型数据库 数据管理 应用服务中间件
【赵渝强老师】Docker的数据持久化
在生产环境中使用Docker时,为了实现数据的持久化和共享,可以通过数据卷(Data Volumes)和数据卷容器(Data Volume Containers)两种方式来管理数据。数据卷是一个独立于容器的挂载目录,可以跨多个容器共享和重用。数据卷容器则是一种特殊容器,用于维护数据卷,便于数据迁移和共享。本文通过示例详细介绍了这两种方法的使用步骤。
|
2月前
|
存储 Kubernetes Docker
|
2月前
|
存储 安全 数据管理
Docker中实现数据持久化
【10月更文挑战第8天】
43 1
|
2月前
|
存储 数据库 Docker
|
2月前
|
存储 安全 Docker
docker中数据持久化(Volumes)
【10月更文挑战第3天】
68 4
|
2月前
|
存储 Kubernetes 数据库
docker数据持久化问题
【10月更文挑战第4天】
32 2
|
2月前
|
关系型数据库 MySQL 数据库
使用Docker部署的MySQL数据库,数据表里的中文读取之后变成问号,如何处理?
【10月更文挑战第1天】使用Docker部署的MySQL数据库,数据表里的中文读取之后变成问号,如何处理?
68 3
|
3月前
|
存储 数据管理 应用服务中间件
Docker的数据管理实战篇
关于Docker数据管理实战的教程,涵盖了Docker数据卷的使用、特点、场景以及数据卷容器的概念和应用。
69 13
Docker的数据管理实战篇
|
4月前
|
存储 Docker 容器
在Docker中,容器退出后,通过docker ps命令查看不到,数据会丢失么?
在Docker中,容器退出后,通过docker ps命令查看不到,数据会丢失么?

热门文章

最新文章