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

网友投稿 228 2022-10-21

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

云计算-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

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

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

​-v 不以/开头的路径:Docker容器内部绝对路径:叫绑定​

docker run -v mydata:/data -it centos

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

docker inspect youthful_swanson

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

创建一个数据卷

docker volume create mycentos

查看所有 ​​数据卷​​

docker volume ls

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/centosVOLUME ["/mycentos1","/mycentos2"]CMD /bin/bash

构建镜像

docker build -t mycentos:v1 .

启动镜像,并进入容器

docker run --name mycentos2 -it mycentos:v1

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

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/

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:kubernetes——pod基础和分类
下一篇:Spring ComponentScan的扫描过程解析
相关文章

 发表评论

暂时没有评论,来抢沙发吧~