【容器】Docker数据管理

本文介绍了Docker中管理数据的两种主要方式:数据卷和数据卷容器。数据卷提供了数据持久化和跨容器共享的功能,支持即时生效的修改,且不会影响镜像。数据卷容器则是一个专门用于提供数据卷的容器,允许其他容器挂载并共享其数据。通过数据卷,可以实现数据备份和迁移。在备份过程中,先创建数据卷容器,写入数据,然后打包导出;在迁移时,可创建新的数据卷容器并挂载备份文件进行数据恢复。
摘要由CSDN通过智能技术生成

前言:

       在生产环境中使用 Docker ,往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,这必然涉及容器的数据管理操作。

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

            1、数据卷

            2、数据卷容器

 

一、数据卷

         数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性:

            1、数据卷可以在容器之间共享和重用

            2、对数据卷的修改会立马生效

            3、对数据卷的更新,不会影响镜像

            4、卷会一直存在,直到没有容器使用

         >  创建一个数据卷

# 命令举例
docker run -it  --name dbdata  -v /dbdate ubuntu /bin/bash

         >  挂载一个主机目录做数据卷

# 命令举例
docker run -itd -v /root/test:/web --name docker_test  ubuntu /bin/bash    
docker exec -it docker_test ubuntu /bin/bash  

         >  挂载一个本地主机文件做数据卷

# 命令举例
docker run -itd -v /root/test/a.txt:/a.txt --name docker_test_file   ubuntu /bin/bash
docker exec -it docker_test_file /bin/bash

        备注:当主机目录或文件挂载到容器中,文件保持同步修改,并立即生效。

 

二、数据卷容器

         如果有一些持续更新的数据需要在容器之间共享,那么最好创建数据卷容器。 数据卷容器,其实就是一个正常的容器,专门用来提供数据卷供其它容器挂载的。

         1、首先创建一个数据卷容器

# 命令举例
docker run -itd  --name dbdata  -v /dbdate ubuntu /bin/bash
docker exec -it dbdata /bin/bash

         2、在其他容器中使用 --volumes-from 来挂载 dbdata 容器中的数据卷   

# 命令举例
docker	run	-it	--volumes-from	dbdata	--name	db1 ubuntu
docker	run	-it	--volumes-from	dbdata	--name	db2 ubuntu

             此时,在db1和db2容器根目录下面也出现一个/dbdata目录,并且三个容器中任意一个容器对/dbdata目录进行修改,其他容器该目录保持同步更新

            备注:如果删除了挂载的容器(包括 dbdata、db1 和 db2),数据卷并不会被自动删除。

                       如果要删除一个数据卷,必须在删除最后一个还挂载着它的容器时使用 docker rm -v 命令来指定同时删除关联的容器。

 

三、利用数据卷对数据进行备份和恢复

       1、数据备份

# 流程实例


# 第一步
docker run -it --name dbdata -v /dbdata ubuntu /bin/bash

# 第二步
# 在/dbdata目录下写入数据,后面打包数据时使用

# 第三步
# 首先使用--volumes-from标记来创建一个加载dbata容器卷的容器,并从本地主机挂载当前到容器的
/backup	目录。
docker run -it --volumes-from dbdata -v ~/test:/backup ubuntu tar cvf /backup/backup.tar /dbdata

# 第四步
# 此时在本机目录~/test目录下可以看到backup.tar打包文件已经在该目录下

       2、数据迁移

        

# 流程示例

# 创建一个容器卷容器.将本机目录test挂载到该容器
docker run -it -v ~/test:/dbdata --name db_test ubuntu /bin/bash
# 此时已经可以看到,压缩包已经在该容器中,接下来就可以在该容器中对该数据进行操作

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值