我是靠谱客的博主 苗条方盒,最近开发中收集的这篇文章主要介绍【浅谈docker 数据卷后文件不存在】docker run -it -v问题显现如何解决,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

        其实算不上是坑,还是自己没有理解深刻。docker数据卷docker run -it -v中, -v 宿主机目录:容器目录。意为将宿主机目录与容器目录进行挂载,宿主机的目录与docker容器目录保持一致。但是记住的是-v 宿主机目录:容器目录,是以宿主机目录为准!而我的需求是要以容器内部为准!想当然的认为是以容器内或哪一侧有文件以哪个为准了。那怎么才能以容器内为准呢!(不能以容器内为准,但有其他解决方案)

问题显现

        最近在做一个项目,镜像为自己export出的镜像,即在我们自己的镜像中,融合了我们的业务代码(前后台分离build文件和jar包)和nginx组件。故我的想法是需要将我的jar包业务中对应的application.yml文件和nginx目录nginx/conf/下的文件挂载到宿主机上,这样再查看文件和修改文件时会方便一些。

        即我的需求是将容器内部的配置文件挂载到宿主机上,而不是将宿主机目录挂载到容器内部。由于docker run -it -v 数据卷对应的是以宿主机目录为准,这就导致我每次docker run -it -v 去启动容器后,进入容器发现,我的业务配置文件application.yml和nginx配置文件nginx.conf都不存在了。

如何解决

        既然我的需求是将容器内部的文件挂载到外部,即以容器内部的文件为主。那么就需要在自定义镜像包的时候,将我们所需要的配置文件复制到一个备份目录中!在docker -run -it -v 时候执行指定镜像中的脚本文件,在脚本文件中将备份目录的配置文件cp到我们所要数据卷的目录里。

docker run --privileged=true -it --name $CONTAINERNAME -p 4500:8086 -p 4501:8088
-v $CONFTMP:/usr/local/cms/config/ -v $NGINXTMP:/usr/local/nginx/conf/ --restart always
$IMAGENAME
sh '/usr/local/bin/docker_cp_config.sh'
##--privileged=true 以最高权限root操作容器
##--restart always
重启docker后该容器也随之重启
## sh '/usr/local/bin/docker_cp_config.sh' 在创建容器后,在容器内执行docker_cp_config.sh脚本

在我们创建的容器内执行docker_cp_config脚本将对应的备份文件cp到nginx目录和java目录下。

这样就能保证我们数据卷之后的文件是以我们容器内的为准了。

最后

以上就是苗条方盒为你收集整理的【浅谈docker 数据卷后文件不存在】docker run -it -v问题显现如何解决的全部内容,希望文章能够帮你解决【浅谈docker 数据卷后文件不存在】docker run -it -v问题显现如何解决所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部