docker存储-目录挂载

大纲:

docker目录挂载:

为啥要目录挂载:

对一个容器进行启动修改后,删除该容器再重启一个相同容器,以前修改内容丢失,第2个原因是容器内部为了保持轻量很多vim等命令工具没有,即即使容器内部有一套自己的文件系统也很难管理

举例如下:

要修改docker容器nginx容器的默认首页需要使用docker exec命令进入docker容器内部再使用echo命令修改/usr/share/nginx/html页面,比较麻烦,并且docker容器内部有自己的文件系统,所以容器内部的数据都存在容器内,当把已启动且运行过的nginx容器删除,然后再重新启动一个nginx容器,则开始在第一个nginx容器中修改的nginx首页等数据就会丢失

模拟过程:

后台启动nginx容器+修改nginx容器内部默认页内容:

如下在浏览器中用80端口访问新启动的nginx容器,访问的是默认的nginx首页,docker exec it 容器id前3位 bash即进入该容器内部bash页面,然后cd定位到nginx容器的默认页位置,再echo修改默认页内容,具体的nginx容器的默认页位置要去docker nginx镜像官方docker hub去查

强制删除容器+重启新容器,发现修改内容丢失(看最后一张图):

啥是目录挂载:

容器内部的文件跟主机上的文件做了映射,容器内部文件修改则对应主机文件修改,主机文件修改则容器内部对应文件同步也做修改

实现目录挂载:

在容器启动时加-v命令,-v 主机文件目录地址:容器内部文件目录地址,实现主机和容器文件目录映射(注意是文件目录地址而不是具体的文件地址【也可以直接写文件地址,就是文件地址太单一了,不如文件目录可容纳的文件多,推荐写文件目录】,如果要做映射再在主机下添加容器内部该文件目录下的文件即可,比如容器内部该目录下a.html,那主机要做文件映射,只需要在-v映射的目录下添加a.html文件,此时浏览器访问容器内部文件直接访问主机上的a.html文件,则要修改容器内部a.html文件内容直接修改主机上的a.html文件即可)

修改主机文件映射容器内部文件:

docker run -d -p 80:80 -v /app/nghtml:/usr/share/nginx/html --name app01 nginx:用官方nginx最新镜像启动叫app01的nginx容器,端口映射为主机上的80对应容器内部的80端口,文件目录映射为主机上的/app/nghtml目录下的文件对应容器内的/usr/share/nginx/html目录下的文件

注意:开始启动后马上在浏览器访问nginx,此时nginx首页访问显示403,因为用了-v文件目录映射后,此时访问容器走的文件目录路径为映射好的主机文件目录路径而不是容器内部的/usr/share/nginx/html目录,主机文件目录/app/nghtml下并没有index.html文件,所以nginx首页访问失败

修改主机映射目录下默认页内容再在浏览器访问nginx首页,显示访问成功且内容为修改主机下的默认页内容

删除执行-v命令后的容器再重启一个nginx新容器,浏览器再访问:

发现nginx容器首页依然为主机上的/app/nghtml文件目录下的index.html内容,即只要主机上的映射文件不变,对容器先前的修改操作就可应用到下一个新启动的容器中

修改容器内部文件映射到主机文件:

docker常用命令:

打印出所有容器:docker ps -a

打印出所有容器id:docker ps -aq

具体在使用命令前可以用docker --help来确定一下

批量强制删除容器(使用强制是因为容器还是运行状态,如果不使用强制删删不了,得先停止容器才能删):docker rm -f $(docker ps -aq) -f强制删除的容器id为docker ps -aq查询出来的所有容器id

写的好啰嗦。。。。。。。未完待续。。。。。。。。

相关推荐
智购科技智能售货柜4 小时前
无人售货机连不上服务器?MQTT 频繁掉线排查全流程~YH
运维·服务器
心念枕惊5 小时前
Docker--Docker Swarm集群
运维·docker·容器
難釋懷5 小时前
Nginx-proxy缓存断点续传缓存 range
运维·nginx·缓存
井川廊咏5 小时前
【总集篇】Linux | 如何创建一个 home 目录在 /data 磁盘的 sudo 用户(补档)
linux·运维·服务器
敖行客 Allthinker5 小时前
docker容器安装Python反推镜像步骤(适用于临时调试用)
python·docker·容器
Kina_C6 小时前
LVS负载均衡的十二种核心调度算法
linux·运维·算法·负载均衡·lvs
AOwhisky6 小时前
Linux(CentOS)系统管理入门笔记(第十五期)——文件系统与存储管理(上篇):设备识别、挂载与文件查找
linux·运维·笔记·centos·文件系统
tonydf6 小时前
传统老手艺之容器编排
后端·容器·aiops
维核科技6 小时前
算力机房高负荷期稳供指南:GPU前置维保与应急处置方案
运维·服务器维修·gpu维修·算力卡维修
worilb7 小时前
Spring Cloud 学习与实践(16):Elasticsearch 商品搜索、中文分词与索引一致性
运维·jenkins