一篇文章教你实战Docker容器数据卷
在上一篇中,咱们对Docker中的容器数据卷做了介绍。已经知道了容器数据卷是什么?能干什么用。那么本篇咱们就来实战容器数据卷,Docker容器数据卷案例主要做以下三个案例
1:宿主机(也就是Docker所安装的机器)与容器之间的映射-让Docker可以直接访问宿主机上面的指定目录;
2:读写规则映射添加说明-数据券默认是读写权限的,我们可以设置只读权限
3:卷的继承和共享-容器1做了映射后,容器2可以继承容器1,然后容器2也就有了映射关系
image.png
大家好,我是凯哥Java(kaigejava),乐于分享,每日更新技术文章,欢迎大家关注“凯哥Java”,及时了解更多。让我们一起学Java。也欢迎大家有事没事就来和凯哥聊聊~~~
直通车,本系列教程已发布文章,快速到达,《Docker学习系列》教程已经发布的内容如下:
【图文教程】Windows11下安装Docker Desktop
【填坑】在windows系统下安装Docker Desktop后迁移镜像位置
【Docker学习系列】Docker学习1-docker安装
【Docker学习系列】Docker学习2-docker设置镜像加速器
【Docker学习系列】Docker学习3-docker的run命令干了什么?docker为什么比虚拟机快?
【Docker学习系列】Docker学习2-常用命令之启动命令和镜像命令
【Docker学习系列】Docker学习系列3:常用命令之容器命令
【Docker学习系列】Docker学习4-常用命令之重要的容器命令
【Docker教程系列】Docker学习5-Docker镜像理解
【Docker教程系列】Docker学习6-Docker镜像commit操作案例
【Docker学习教程系列】7-如何将本地的Docker镜像发布到阿里云
【Docker学习教程系列】8-如何将本地的Docker镜像发布到私服?
1:宿主机VS容器之间映射添加容器卷
1.1:命令公式:
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名
注意这个命令是在宿主机上执行
实例:
将宿主机/tmp/host_data目录映射到容器的/tmp/docker_data上
9a713990df14bf54c856e14cd5eaa59f.png在d为:bdea29051ebb的容器i的/tmp/docker_data里面创建一个indocker.txt
0c7b8aa9e1d0086b9eaced3972d7170d.png接着,我们回到宿主机中,查看tmp/host_data目录下:
13fa34d1863ff907c65a0086afc80d45.png同理,在宿主机上创建了inhost.txt文件,在容器中也可以看到
5200161a0fbcb43a456e7158a6893306.png ad7d9c8b87728dc2d146fab7320e4af4.png1.2:查看数据卷是否挂载成功
命令公式:
docker inspect 容器id
4d7c4baf44c083e753628898fa6836e2.png再到 Mounts这个部分:
de4f7f88db8cb3e13b2c78235bf94b67.png我们可以看到type是bind,sorce是宿主机的,destination是容器的
1.3:容器和宿主机之间数据共享
上文案例中的,indocker.txt和inhost.txt案例就是。
思考:当把容器关闭后,在宿主机的目录中,在创建了一个c.txt文件之后,在启动容器,那么容器的挂载目录中会有c.txt文件吗 ?
答案:c.txt文件依然会在容器中
2:读写规则映射添加说明
当宿主机和容器挂载数据卷之后,默认的读写权限就是:“读写”
c5b839813b2273365d6283e8f6459a93.png设置只读权限的命令公式
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:ro 镜像名称
和默认的区别就是加上了ro参数
ro:read only.
如果在容器内写操作会有以下提示:
d3ff58dd1379a89182a351715b9daa73.png3:卷的继承和共享
案例:
容器1完成和宿主机的映射
容器2继承容器1的卷规则
8ceae4020c7c58b51be203eaaccc08f3.png容器2继承容器1的卷规则:
命令公式
docker run -it --privileged=true --volumes-from 父类 [name] 镜像名
f32f8ca76173ed6c9c26e3675fb27bc1.png 5accbb6852a95e5b63edf7a73540b260.png在u2容器中,查看tmp目录
b5f7a2abf76097983908ddad538073a8.png可以看到已经存在了。