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注释

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

相关推荐
Wang's Blog19 小时前
Java 项目实战: 外卖平台-文件下载与ServletOutputStream回写浏览器
服务器·项目开发
guo_wen_qiang19 小时前
上传本地镜像到harbor中
docker·容器·持续部署
张洛闻Eren19 小时前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
羑悻的小杀马特19 小时前
Dockerfile 全景指南:从入门编写dockerfile到生产环境镜像优化实战,一步步带你从啃透制作指令到镜像制作落地!
docker·dockerfile·镜像制作
琥珀色糖19 小时前
SimlpeHttp
linux·服务器
BianHuanShiZhe19 小时前
docker常见命令
docker
其实防守也摸鱼19 小时前
内网穿透与反向代理:原理、工具与实战指南
android·大数据·运维·安全·网络安全·自动化·渗透
第十人i20 小时前
Linux 日志管理系统:journald 配置与优化
linux·服务器
布裘20 小时前
【银河麒麟】V4桌面图标消失,右击鼠标没反应排查
运维·银河麒麟·桌面环境
懂软件的胡子个哥20 小时前
微信机器人为什么需要“回复候选”而不是所有 AI 内容直接发送
运维·微信·自动化·wechatapi·个人微信号二次开发