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的容器挂载机制,总的来说就是,没有目录就创建,以宿主机的文件目录为主,直接覆盖容器的目录(就是将目录复制到容器,包括目录所有文件)

 

注意事项

  在进行容器目录挂载的时候,若要设置配置文件的挂载,只需要挂载相对应的配置文件,且宿主机的配置文件需要有默认值;

在容器启动时,会使用挂载的配置文件进行初始化,若文件找不到或为空,会导致启动失败。若挂载整个配置文件的目录,会将容器默认的配置文件夹覆盖

从而导致启动失败,因此只需要将要修改的配置文件进行挂载映射即可。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM