docker存储-卷映射

为啥使用卷映射:

nginx不能使用-v目录挂载命令映射容器内部配置文件nginx.conf,会导致nginx镜像启动失败:

原因如下:

-v目录挂载启动时,主机目录默认产生的空文件夹会让容器内部默认的配置文件所在的文件夹也变成空文件夹,则启动时默认找的容器内部的配置文件会导致找不到,容器启动失败

详细原因:

nginx容器内部的配置文件nginx.conf使用-v命令目录挂载到本机并不能成功,原因是在启动容器时使用-v命令将容器内部的nginx.conf配置文件挂载到主机上时,会默认在-v指定的主机的目录位置创建一个空文件夹,而此时空文件夹里没有任何文件,即也没有nginx.conf配置文件,则挂载到容器内部的文件目录下也会导致-v中的容器内部的文件目录下什么文件也没有,那容器启动时使用默认的容器内部目录的配置文件就会导致nginx镜像找不到nginx.conf配置文件,导致启动失败

使用卷映射步骤:

命令:

也是使用-v命令+卷名称:/容器内部目录,会默认在启动时给主机把映射的容器内部目录下的文件都创建一遍,则nginx容器启动时主机内部nginx.conf配置文件不为空,则容器启动成功

卷名称和目录挂载区分:只要-v后边不是跟的./或/开头的都认为是卷名称即卷映射,而不是目录地址即目录挂载

卷在主机默认位置:

/var/lib/docker/volumes/卷名称

如下第一张截图例子:-v ngconf:/etc/nginx,意思是在启动时会在主机创建一份和容器内部/etc/nginx目录下所有相同的文件,卷名称叫ngconf,则这个时候启动的时候主机的nginx.conf文件不为空

如下第3张图及之后图,再去修改容器内部的nginx.conf配置文件,就直接vi修改主机卷下的nginx.conf文件即可

-v目录挂载和卷映射区别:

目录挂载启动时会在主机创建默认空文件夹,卷映射不会创建空文件夹而是以容器内部映射的目录下的文件为准

卷的常用操作:

查询所有卷:docker volume ls

创建一个卷:docker volume create 卷名称

看一个卷的详细信息:docker volume inspect 卷名称

注意:看第2张图,删除一个容器并不会删除卷,比如启动容器app03时创建了ngconf卷,在删除了app03后,ngconf卷依然存在并且可以在下次启动容器时继续使用,即ngconf卷仍然保留着之前的所有改变,即仍然有已经被删除的app03镜像的主机nginx.conf文件添加的hahaha注释

下次再见。。。。。。。。。。。

相关推荐
阿里云大数据AI技术1 小时前
阿里云 EMR AI 助手正式发布:从问答工具到全栈智能运维助手
运维·人工智能
辉的技术笔记3 小时前
Dify 自部署为什么跑不动?6 层瓶颈诊断法教你定位
docker
你好潘先生7 小时前
别再记命令了,用 yeero do 说句人话就能跑脚本,而且不烧 token
服务器·python·命令行
SkyWalking中文站1 天前
认识 Horizon UI · 6/17:Trace 探索器
运维·监控·自动化运维
程序员老赵1 天前
Docker 部署 Redmine:老牌开源项目管理部署实测记录
docker·开源·团队管理
程序员老赵1 天前
服务器文件不想 SFTP 上传?Docker 跑个 File Browser,浏览器就能管理
服务器·docker·开源
火车叼位1 天前
写给初级开发者:SSL、SSH、HTTPS 与证书体系全解析
运维
vivo互联网技术1 天前
从 10 分钟到 1 秒:ES 深度分页任意跳页的三轮优化实战
服务器·数据库·redis·elasticsearch·深度分页
小猿姐2 天前
唯品会大规模数据库云原生实践:基于 KubeBlocks 管理数千实例的统一运维之路
运维·elasticsearch·云原生