docker的挂载目录机制总结
经过测试,使用docker的目录挂载,有以下规律,以nginx容器做测试
规律
1、若宿主机和默认容器都不存在目录,则会创建所写的对应目录
命令:docker run --name mynginx5 -p 101:80 -v /data/nginx:/etc/nginx1 -d nginx:latest
容器:
宿主机:
2、若宿主机存在目录,且里面有文件,而容器没有目录,则会将宿主机的目录同步映射到容器
命令:docker run --name mynginx5 -p 101:80 -v /data/nginx:/etc/nginx1 -d nginx:latest
容器:
宿主机:
3、若容器有目录,且有文件,宿主机有目录,没有文件。 会将目录覆盖,以宿主目录为主,挂载后的容器目录为空。因为宿主机的目录为空
命令:docker run --name mynginx777 -p 100:80 -v /data/nginx/html:/usr/share/nginx/html -d nginx:latest
正常容器的目录下有页面:
但是目录被宿主机覆盖:
宿主机:
可以运行成功:
访问页面:
总结
docker的容器挂载机制,总的来说就是,没有目录就创建,以宿主机的文件目录为主,直接覆盖容器的目录(就是将目录复制到容器,包括目录所有文件)
注意事项
在进行容器目录挂载的时候,若要设置配置文件的挂载,只需要挂载相对应的配置文件,且宿主机的配置文件需要有默认值;
在容器启动时,会使用挂载的配置文件进行初始化,若文件找不到或为空,会导致启动失败。若挂载整个配置文件的目录,会将容器默认的配置文件夹覆盖
从而导致启动失败,因此只需要将要修改的配置文件进行挂载映射即可。
本文作者:durtime
本文链接:https://www.cnblogs.com/durtime/p/15865894.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
2021-02-06 每日日报