docker专题-数据管理

发布于:2023-01-23 ⋅ 阅读:(406) ⋅ 点赞:(0)


序言

  使用Docker过程中,需要对数据进行持久化或在多容器之间、主机与容器之间需要进行数据共享,必然涉及到容器的数据管理。
  容器中数据管理方式有两种:
    数据卷Data Volumes:容器和本地主机间映射的特殊目录,绕过 UFS;
    数据卷容器Data Volumes Containers:使用特定的容器维护数据卷。
  数据卷特性:
    可以在容器之间共享和重用
    对数据卷的修改会立马生效
    对数据卷的更新不会影响镜像
    数据卷默认会一直存在,即使容器被删除。

一、主机-容器数据交互图

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
  数据卷(Volumes):通过docker volume create -d local 数据卷名称 创建
  绑定数据卷 (Bind mounts):创建容器时将主机本地目录路径挂载到容器内做为数据 卷的形式称绑定数据卷。
  Tmpfs mount:临时数据卷,存在于内存中。

二、数据卷容器Data Volumes Containers

1.数据卷容器创建与数据共享

  创建数据卷容器dataContainer,同时创建本地数据卷(/tmp/localdataVol)挂载到/dataVol:

	docker run -itd -v /tmp/localdataVol:/dataVol 
		 	   --name dataContainer ubuntu

  1.验证本地本地数据卷(/tmp/localdataVol)和容器内/dataVol目录内数据的一致性:
  进入dataContainer容器编辑dataVol数据卷下文件内容:

	docker exec -it dataContainer /bin/bash
    echo  ‘dataContainer-dataVol:dataVolumes context data...’ \
    	 > log.txt

  退出容器查看本地数据卷数据是否同步更新:cat /tmp/localdataVol/log.txt
  2.验证新数据卷容器dataContainer2和原容器dataContainer间数据卷数据共享、同步:
  创建新数据卷容器dataContainer2,同时挂载容器dataContainer内所有数据卷:

	docker run -itd --volumes-from dataContainer \ 
		--name dataContainer2 ubuntu

  进入dataContainer2容器编辑/dataVol数据卷下文件内容:

	docker exec -it dataContainer2 /bin/bash

2.数据卷容器数据迁移

  利用数据卷容器对数据卷进行数据的备份与恢复,实现数据的迁移。
备份
  备份数据卷容器dataContainer 内的数据卷到本地${pwd}和容器worker 数据卷backup目录下:

	docker run --itd --volumes-from dataContainer \
		   -v ${pwd}:/backup --name worker ubuntu \
	       tar cvf /backup/backup.tar /dataVol

  运行容器worker 时,挂载数据卷容器dataContainer内所有数据卷;将本地当前目录挂载至容器worker目录/backup;数据卷容器dataContainer内数据卷/dataVol压缩为backup.tar文件,存储在数据卷容器worker数据卷/backup/下,且在本地${pwd}目录下同时映射。
恢复
  1 创建带有空数据卷的数据卷容器worker

	docker run --itd -v destDataVol --name worker ubuntu /bin/bash

  2 将本地数据恢复至数据卷容器worker

	docker run --volumes-from worker -v ${pwd}:/backup \
		   tar xvf /backup/backup.tar

  本地/backup/backup.tar文件解压后同步至数据卷容器worker数据卷/backup内


网站公告

今日签到

点亮在社区的每一天
去签到