云计算-9-Dokcer容器的数据管理

本文涉及的产品
数据管理 DMS,安全协同 3个实例 3个月
推荐场景:
学生管理系统数据库
简介: 数据卷是可以供一个或者多个容器使用的特殊目录,它绕过UFS(UNIX文件系统),数据卷的设计目的,在于数据的持久化存储,它完全独立于容器的生命周期,所以在删除docker容器的时候不会删除其挂载的数据卷,也不存在类似垃圾收集机制,对容器挂载的数据卷进行处理
+关注继续查看

云计算-9-Dokcer容器的数据管理

什么是数据卷



数据卷是可以供一个或者多个容器使用的特殊目录,它绕过UFS(UNIX文件系统),数据卷的设计目的,在于数据的持久化存储,它完全独立于容器的生命周期,所以在删除docker容器的时候不会删除其挂载的数据卷,也不存在类似垃圾收集机制,对容器挂载的数据卷进行处理。


数据卷有以下特点:


数据卷在容器启动的时候进行初始化,如果容器使用的进行在挂载点包含数据,那么数据也会拷贝到初始化的数据卷中


数据卷可以在容器之间进行共享或者重用


可以对数据卷里面的内容直接进行修改


数据卷的变化不会影响镜像的更新


数据卷会一直存在,哪怕是挂载数据卷的容器被删除


容器的数据卷

为容器添加数据卷

  • -v 宿主机绝对路径:Docker容器内部绝对路径:叫挂载



我们还以centos为例:创建一个名为mycentos的容器,并且加载一个数据卷l在宿主机上的/centos/mydata,同步容器/data 目录下数据

docker run -v /centos/mydata:/data -it centos


此时已经进入容器,然后进入到/data目录

cd /data


此时该路径下不存在任何数据,我们在该目录下创建一个text.txt文件

touch text.txt


然后我们在宿主机的查看/centos/mydata下文件也存在text.txt

image

因为数据卷是独立存在的,所以此时我们删除容器,数据卷还会存在

docker rm -f  $(docker ps -qa) # 删除所有容器


  • -v 不以/开头的路径:Docker容器内部绝对路径:叫绑定
docker run -v  mydata:/data -it centos


其他步骤和上面一致,然后我们使用docker inspect 容器名查看容器的信息

docker inspect youthful_swanson


a407500d6ffeff756b02f19ec3276f01.png


发现在启动容器的时候自动创建了一个volume

创建一个数据卷

docker volume create mycentos


查看所有 数据卷

docker volume ls


8202980e21ae3ddd8f03dda968a179ad.png


docker volume inspect mycentos:查询卷详情

docker volume mycentos: 移除无用卷

为数据卷添加访问权限

docker run -v /centos/mydata:/data:ro -it centos


:ro给容器内部添加只读权限,这样docker容器内的目录下就不能创建文件,只能在宿主机的/centos/mydata下创建文件。

使用Dockerfile构建包含数据卷的镜像


指令格式:

volume["/test"]


dockerfile文件如下

FROM nexus.gree.com/centos
VOLUME ["/mycentos1","/mycentos2"]
CMD /bin/bash


构建镜像

docker build -t  mycentos:v1  .


启动镜像,并进入容器

docker run --name mycentos2 -it mycentos:v1



查看容器目录,发现容器下有两个目录,/mycentos1和/mycentos2

image

Docker的数据卷容器


什么是数据卷容器

一个容器挂在数据卷,然后其他容器通过挂载这个容器实现数据共享,挂载数据卷的容器叫做数据卷容器



挂载数据卷容器的方法

docker run --volumes-from [容器名]


举例说明:

docker run --name mycentos3 -it mycentos:v1  #(mycentos镜像是之前上面的dockerfile创建的)



mycentos:v1镜像存在两个数据卷mycentos1和mycentos2

进入容器后创建一个文件在数据卷mycentos1创建testcentos.txt

touch /mycentos1/testcentos.txt


创建一个新的容器,挂载刚才mycentos3这个容器创建的数据卷

docker run --name mycentos4  --volumes-from mycentos3  -it mycentos:v1


然后查看mycentos4容器的mycentos1数据卷下也存在testcentos.txt。

docker cp指令

Docker cp指令有两种格式

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|- :把容器里面的复制出来
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH:把外部的复制进去


OPTIONS说明:

  • **-L 😗*保持源目标中的链接

举例说明

  • 将/mydata/test目录拷贝到8899992容器的/mydata目录下
docker cp /mydata/test 8899992:/mydata


  • 将容器8899992的/mydata目录拷贝到主机/mydata目录下
docker cp  8899992:/mydata /mydata/


目录
相关文章
|
2月前
|
存储 数据管理 数据安全/隐私保护
《Docker数据管理:卷、挂载和持久化,保障容器环境数据安全》
《Docker数据管理:卷、挂载和持久化,保障容器环境数据安全》
61 0
|
11月前
|
边缘计算 缓存 Kubernetes
阿里云云边一体容器架构创新论文被云计算顶会 ACM SoCC 录用
此次论文入选 ACM SoCC,是阿里云在云原生容器技术领域,拓展服务边界,实现云边协同的又一次创新。
212 0
阿里云云边一体容器架构创新论文被云计算顶会 ACM SoCC 录用
|
云计算 容器
聚焦第十一届中国云计算标准和应用大会,阿里云邀您共话边缘云容器核心技术
7月2日,第十一届中国云计算标准和应用大会边缘云分论坛,阿里云邀您共话边缘云容器核心技术!
231 0
聚焦第十一届中国云计算标准和应用大会,阿里云邀您共话边缘云容器核心技术
|
Kubernetes Cloud Native 云计算
云计算、容器和云原生基础课程 | 图谱精选课程
带你了解云原生技术的演进和趋势方向
云计算、容器和云原生基础课程 | 图谱精选课程
|
边缘计算 运维 资源调度
以 Kubernetes 为代表的容器技术,已成为云计算的新界面
可以说,以 Kubernetes 为代表的容器技术正成为云计算新界面。容器提供了应用分发和交付标准,将应用与底层运行环境进行解耦。Kubernetes 作为资源调度和编排的标准,屏蔽底层架构差异性,帮助应用平滑运行在不同基础设施上。CNCF Kubernetes 的一致性认证,进一步确保不同云厂商 Kubernetes 实现的兼容性,这也让更多的企业愿意采用容器技术来构建云时代的应用基础设施。
15553 0
以 Kubernetes 为代表的容器技术,已成为云计算的新界面
|
云安全 弹性计算 运维
阿里云重磅发布云原生裸金属方案:裸金属+容器,解锁云计算的新方式
新一代容器服务ACK,可以将最新神龙弹性裸金属实例的强大性能发挥得淋漓尽致,具备极致性能、高效调度、全面安全的特点:
5993 0
|
弹性计算 运维 Cloud Native
阿里云重磅发布云原生裸金属方案:裸金属+容器,解锁云计算的新方式
在 6 月 9 日 2020 阿里云线上峰会上,阿里云智能基础产品事业部高级研究员蒋江伟重磅发布了云原生裸金属方案。
阿里云重磅发布云原生裸金属方案:裸金属+容器,解锁云计算的新方式
|
云安全 弹性计算 运维
阿里云重磅发布云原生裸金属方案:裸金属 + 容器,解锁云计算的新方式
在 6 月 9 日 2020 阿里云线上峰会上,阿里云智能基础产品事业部高级研究员蒋江伟重磅发布了云原生裸金属方案。
1363 0
阿里云重磅发布云原生裸金属方案:裸金属 + 容器,解锁云计算的新方式
热门文章
最新文章
推荐文章
更多