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

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

相关推荐
七夜zippoe10 小时前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann
盟接之桥10 小时前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
金刚猿11 小时前
01_虚拟机中间件部署_root 用户安装 docker 容器,配置非root用户权限
docker·中间件·容器
JH_Kong11 小时前
解决 WSL 中 Docker 权限问题:从踩坑到完整修复
docker·容器
忆~遂愿11 小时前
GE 引擎与算子版本控制:确保前向兼容性与图重写策略的稳定性
大数据·开发语言·docker
Fcy64812 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满12 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠12 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
主机哥哥12 小时前
阿里云OpenClaw部署全攻略,五种方案助你快速部署!
服务器·阿里云·负载均衡
Harvey90312 小时前
通过 Helm 部署 Nginx 应用的完整标准化步骤
linux·运维·nginx·k8s