1 docker 容器数据卷

1. 什么是容器数据卷?

将应用与运行的环境打包形成容器运行,运行可以伴随着容器,但是我们对数据的要求希望是持久化的

容器之间希望有可能共享数据

dcoker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据作为镜像的一部分保存来下,那么当容器删除后,数据自然也就没有了。

为了保存数据在docker中我们使用卷。

2. 容器数据卷能做什么?

容器数据的持久化

容器之间继承和共享数据

3.添加数据卷的方式

3.1直接使用命令添加

① 语法:

docker run  -it -v /宿主机目录:/容器内目录 centos /bin/bash

②查看容器卷是否挂载成功

docker inspect 容器ID/容器名

"Mounts": [    {        "Type": "bind",        "Source": "/my/logs",        "Destination": "/publish/logs",        "Mode": "",        "RW": true,        "Propagation": "rprivate"    }],说明挂载成功

③查看容器卷和宿主机的数据共享

在宿主机的/my/logs/文件夹中创建hello.txt,并写入数据hello

进入容器查看/publish/logs/hello.txt文件数据和/my/logs/里面一致

注意:在以上的例子中,默认只能在宿主机里面写数据

如果出现以下问题

Permission denied (权限被拒绝)

解决方法:

在挂载目录后加  --privileged=true

docker run  -it -v /宿主机目录:/容器内目录 --privileged=true centos /bin/bash

3.2 使用Dockerfile添加

4.数据卷容器

作用:实现容器之间的数据共享

docker run -it --name os1 -v /my/logs:/publish/logs 57a98c20507b  /bin/bash

docker run -it --name os2 --volumes-from os1 57a98c20507b /bin/bash

docker run -it --name os3  --volumes-from os2  57a98c20507b /bin/bash

测试方法:

进入os1 在logs 创建1.txt

进入os2 在logs 列表能看见1.txt 创建2.txt,

进入os3 在logs 列表能看见1.txt ,2.txt 创建3.txt

删除os1容器后,os2 os3 的logs 里面的数据不会发生变化

原因:logs文件挂载的宿主文件/my/logs文件上,(数据持久化)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容