docker数据管理

1.数据卷管理

数据卷的作用是将宿主机的某个磁盘目录映射到容器的某个目录,从而实现宿主机与容器之间的数据共享

docker run(create --name 容器名称) -v 宿主机目录:容器目录  镜像名称

2.多个容器之间数据共享管理

多个容器之间的数据共享就需要用到数据卷容器,数据卷容器也是一个容器,但是他与其他docker容器不一样,他是专门用来提供数据卷给其他容器进行挂载操作

  2.1创建数据卷容器

docker create --name my_datas -v /datas eureka:1.0   #使用eureka:1.0镜像容器,并命名为my_datas,同时在容器中创建/datas目录,/datas目录是共享目录

  2.2创建docker容器并使用数据卷容器

命令格式:通过--volumes-from 参数设定从哪个数据卷容器创建新的容器,必须通过数据卷容器来创建docker容器,否则无法共享

docker run --volumes-from [数据卷容器名或者ID ][options][镜像名称或者ID]

具体如下(以2.1创建的数据卷容器为例):

docker run --volumes-from my_datas -d --name test1 -p 8001:8761 eureka:1.0  #创建容器test1

docker run --volumes-from my_datas -d --name test2 -p 8002:8761 eureka:1.0  #创建容器test2

  2.3测试数据共享

上面2.2已经创建并启动了两个docker容器,分别为test1和test2,分别进入两个容器里面

访问test1容器并在共享目录中写入数据

docker exec -it test1  /bin/bash
cd /datas
echo "abc">>a.txt

访问test2容器并读取共享目录中的数据

此时进入到容器test2中会发现/datas目录下也有a.txt文件

docker exec -it test2 /bin/bash
cd /datas
ls -l

至此,两个容器就实现了数据共享

3.数据备份

3.1.docker cp复制备份

docker cp  96f7f14e99ab:/www /tmp/   #将容器96f7f14e99ab的/www目录拷贝到宿主机的/tmp目录中进行数据备份
docker cp /tmp/ 96f7f14e99ab:/www  #将宿主机/tmp/目录拷贝到容器96f7f14e99ab中,目录重命名为www

3.2.使用一个临时容器作为中间过程辅助完成:此时备份的目录必须是创建数据卷容器时指定的挂载目录

命令格式:

docker run --rm --volumes-from [数据卷容器名称或ID] -v [宿主机目录]:[容器目录] [镜像名称] [备份命令]

其中--rm是自动删除容器参数,表示此容器执行完备份命令后,自动删除

docker run --rm -d -e MYSQL_ROOT_PASSWORD=ROOT -p 3306:3306 --name tmp --volumes-from my_datas -v /opt/datas:/tmp/datas mysql:5.7 tar -czf /tmp/datas/backup.tar.gz /datas  
#my_datas为数据卷容器名称,有了数据卷容器就有了共享文件夹/datas,/tmp/datas表示当前容器的文件夹,/opt/datas表示宿主机文件夹
#tar -czf /tmp/datas/backup.tar.gz /datas 表示将共享文件夹/datas压缩到容器/tmp/datas/backup.tar.gz目录下,在/tmp/datas目录下的数据都在宿主机的/opt/datas目录下,所以进入到宿主机的/opt/datas/目录下就能看到压缩好的backup.tar.gz文件

4.通过临时容器还原数据

命令格式:

docker run --rm --volumes-from [数据要恢复到的容器] -v [宿主机备份目录]:[容器备份目录] [镜像名称] [解压命令]

docker run --rm -d --volumes-from my_datas -e MYSQL_ROOT_PASSWORD=ROOT --name tmp -v /opt/datas:/tmp/datas mysql:5.7 tar -xf /tmp/datas/backup.tar.gz -C /
#tar -xf:解压命令
#-C /:把数据解压到my_datas中根目录
posted @ 2023-03-07 12:02  机智的老猫咪  阅读(30)  评论(0编辑  收藏  举报