docker-compose怎么把镜像里面的配置文件挂载到宿主机上?
我想要把打包进docker的配置文件夹挂载出来到宿主机上,但是用docker-compose中的volumes
属性,是把宿主机的文件夹交给docker镜像使用,如果宿主机文件夹为空,docker内的程序启动读取配置文件就失败了。
我的需求是:我已经把默认的配置文件夹打包进了docker里面了,在编辑docker-compose时想要指定将打包进docker的配置文件夹挂载出来给宿主机,这样后面配置文件要做修改的话,我直接就在宿主机打开配置文件修改了。
我目前知道volumes
可以把宿主机的文件交给docker去使用,但是不知道怎么把docker的文件夹交给宿主机,麻烦知道的同学指导一下,感谢大家啦!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
在启动脚本, 从容器里的一个目录拷过去不就行了?
本来数据卷就是从宿主机挂载到容器,你这把容器内挂在到宿主机是怎么个意思,你说你把默认的配置文件打包进docker了,默认的配置文件原来在哪?
楼主有答案了吗?我也有你这样的需求
没这功能
实在想从host改,可以docker inspect找到那个container的路径进去改
如果需要常改,考虑一下是不是真的应该用docker
启动容器的时候把 ssh 的端口映射出来,然后在宿主机上用 sshfs 可以把容器里的目录挂载出来。
不过 docker 镜像里可能并没有带 ssh 服务,需要自己安装和配置。
打包docker镜像的时候,不要打包配置文件,配置文件采用挂载的方式让容器读取就好了
赞成“东方星痕”的观点,通过容器本身做配置的初始化。
当然docker-composer中照常可以通过volume方式,将配置目录从宿主机挂载只容器中,容器启动脚本,发现挂载进来的配置目录为空或文件不存在,就把默认容器中的配置覆盖过去就可以。后续也可以宿主机上直接编辑修改。
使用docker cp命令拷贝出来
运行临时镜像
另起一个终端拷贝文件
docker cp e127:/B/config.conf /host/confg.conf
关掉临时的
contannerID:e127
容器正式启动
docker run -v /host/confg.conf:/B/config.conf image:latest