Docker中容器数据卷详解

本站所有内容来自互联网收集,仅供学习和交流,请勿用于商业用途。如有侵权、不妥之处,请第一时间联系我们删除!Q群:迪思分享
免费资源网 – https://freexyz.cn/

目录什么是容器数据卷数据的覆盖问题使用数据卷方式一:直接使用命令挂载 -v测试挂载卷方式二:Dockerfile文件数据卷命令查看数据卷方式一:docker inspect 容器ID方式二:docker volume inspect juming-nginx挂载三种方式扩展

什么是容器数据卷

从docker的理念说起,docker将应用和环境打包成一个镜像,运行镜像(生成容器)就可以访问服务了。

如果数据都存在容器中,那么删除容器,数据就会丢失!需求:数据可以持久化 MySQL容器删了,就相当于删库了。需求:MySQL数据可以本地存储

容器之间可以有一个数据共享的技术,docker容器产生的数据同步到本地或者别的地方。

这就是数据卷技术,就是目录挂载,将容器内的目录,挂载到虚拟机上或者Linux上

Docker中容器数据卷详解插图

目的:实现容器数据的持久化和同步操作。容器间也可以数据共享

数据的覆盖问题

如果挂载一个空的数据卷到容器中的一个非空目录中,那么这个目录下的文件会被复制到数据卷中。

如果挂载一个非空的数据卷到容器中的一个目录中,那么容器中的目录中会显示数据卷中的数据。如果原来容器中的目录中有数据,那么这些原始数据会被隐藏掉。

这两个规则都非常重要,灵活利用第一个规则可以帮助我们初始化数据卷中的内容。掌握第二个规则可以保证挂载数据卷后的数据总是你期望的结果。

使用数据卷

方式一:直接使用命令挂载 -v

docker run -it -v 主机目录:容器内目录

docker run -it -v /home/test:/home centos /bin/bash

docker inspect 命令查看容器信息

Docker中容器数据卷详解插图1

测试挂载卷

1、在容器内部修改文件同步到Linux主机上

进入容器,在/home目录下创建123.sh文件

Docker中容器数据卷详解插图2

主机内可以查看在容器内部创建的文件

Docker中容器数据卷详解插图3

2、同样地,在Linux上修改挂在卷文件可以同步到容器内部

Docker中容器数据卷详解插图4

3、停止容器,修改Linux主机上的文件,同步到容器内

# 1、停止容器
exit

# 2、查看容器是否还在运行
docker ps

# 3、在Linux主机上修改对应目录的文件

# 4、启动容器并查看

# 4.1、 查看历史运行的容器
docker ps -a

# 4.2、 启动容器
docker start CONTAINER ID

# 4.3、 进去容器
docker attach CONTAINER ID

# 4.4、 查看数据卷文件

Docker中容器数据卷详解插图5

方式二:Dockerfile文件

请查看下一章节

数据卷命令
docker volume

docker volume –help
Usage: docker volume COMMAND
Manage volumes
Commands:
create Create a volume
inspect Display detailed information on one or more volumes
ls List volumes
prune Remove all unused local volumes
rm Remove one or more volumes

Run docker volume COMMAND –help for more information on a command.

Docker中容器数据卷详解插图6

具名挂载/匿名挂载 匿名挂载

-v 容器内路径
-P 自动分配端口号

docker run -d -P –name nginx02 -v /etc/nginx nginx

具名挂载

-v 卷名:容器内路径
docker run -d -P –name nginx03 -v juming-nginx:/etc/nginx nginx

Docker中容器数据卷详解插图7

查看数据卷

方式一:docker inspect 容器ID

Docker中容器数据卷详解插图8

方式二:docker volume inspect juming-nginx

Docker中容器数据卷详解插图9

查看Linux主机docker工作目录 /var/lib/docker

所有docker容器内的卷,没有指定目录的情况下都是存放在 /var/lib/docker/volumes/xxx/_data 目录下

Docker中容器数据卷详解插图10

挂载三种方式

# 1
-v 容器内路径 # 匿名挂载

# 2
-v 卷名:容器内路径 # 具名挂载

# 3
-v 宿主机路径:容器内路径 # 指定路径挂载

扩展

给挂载的数据卷增加读写权限控制

通过 -v 容器内路径, ro rw 改变读写权限

ro readonly 只读

rw readwrite 可读写

# 一旦设置了容器权限,容器对我们挂载出来的内容就有限定了

docker run -d -P –name nginx03 -v juming-nginx:/etc/nginx:ro nginx
docker run -d -P –name nginx03 -v juming-nginx:/etc/nginx:rw nginx

ro : 说明这个路径只能通过宿主机来操作,容器内无法操作

免费资源网 – https://freexyz.cn/


© 版权声明
THE END
★喜欢这篇文章吗?喜欢的话,麻烦动动手指支持一下!★
点赞15 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容