docker volumes file but create directory

当Docker容器在运行中生成新文件时,尝试挂载到宿主机会创建目录而非文件。问题在于双方都不存在文件时,Docker默认创建文件夹。解决方法包括在宿主机或容器内预先创建文件。推荐在宿主机上创建,避免污染代码库。若文件名不固定,可将文件存于特定目录并常规映射。
摘要由CSDN通过智能技术生成

遇到的问题

docker镜像在运行过程中会产生新的文件。我想把这个在容器中的新文件挂载到宿主机上方便查看和保留。在docker-compose.yml写法如下:

volumes:
  - ./sample.txt:/code/sample.txt
  # sample.txt是运行生成的新文件。/code是它在容器中的路径

然后结果却生成了两个文件夹sample.tex,分别在宿主机上和容器中,导致程序后续无法正常运行

问题的原因

容器启动时,如果容器和宿主机中均没有挂载的文件,则默认生成文件夹

以上是docker对上诉挂载问题的处理办法,因为新文件是在运行过程中生成的,宿主机也没有对应文件,所以结果上来说是正常的

解决的办法

一,在宿主机上事先生成新文件(推荐)

理解起来也很简单,问题原因就是两端都没有文件,没有挂载点导致的,所以默认生成两个文件夹。现在给宿主机上事先生成新文件,就形成了特定的挂载关系。操作如下:

touch sample.txt #docker-compose.yml同级目录下执行
docker-compose up -d ImageName    #正常启动容器

其余不用修改,包括Dockerfile和docker-compose.yml等

二,在容器中添加文件</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值