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

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

相关推荐
工具罗某人11 小时前
docker compose部署kafka集群搭建
docker·容器·kafka
safestar201211 小时前
ES批量写入性能调优:BulkProcessor 参数详解与实战案例
java·大数据·运维·jenkins
来一颗砂糖橘12 小时前
负载均衡的多维深度解析
运维·负载均衡
楠奕12 小时前
CentOS7安装GoldenDB单机搭建及常见报错解决方案
linux·运维·服务器
GCTTTTTT12 小时前
远程服务器走本地代理
运维·服务器
剑锋所指,所向披靡!12 小时前
Linux常用指令(2)
linux·运维·服务器
做咩啊~13 小时前
6.增加一个flat网段
服务器·openstack
飞Link13 小时前
逆向兼容的桥梁:3to2 自动化降级工具实现全解析
运维·开发语言·python·自动化
HXQ_晴天13 小时前
Linux 系统的交互式进程监控工具htop
linux·服务器·网络
LIZhang201614 小时前
linux写一个脚本实时保存内存占用情况
linux·运维·服务器