你如何删除泊坞窗的内容?

我有一个从docker-compose.yml文件创build的卷。 我们来调用volume my_volume和与my_container关联的容器。 我想脚本删除卷的内容。 下面的所有内容都假定my_container已经停止,但没有被删除。

我可以使用以下命令列出卷的内容:

docker run --rm -v my_volume:/data/ ubuntu ls -la /data 

这工作,所以接下来我尝试删除数据文件夹的内容使用:

 docker run --rm -v my_volume:/data/ ubuntu rm -rf /data/* 

没有错误消息被报告,所以事情似乎成功,但是当我再次列出卷的内容时,卷中的数据都没有被删除。

我可以通过input一个容器来完成删除操作,然后像这样删除:

 docker run --rm -it -v my_volume:/data/ ubuntu /bin/bash 

然后从容器内:

 rm -rf /data/* 

这工作正常,内容被删除,但这不符合规定的目的,因为它不是脚本。 任何想法为什么rm不工作,当我尝试在容器外使用它,以及我可能会去除卷的内容成功? 我应该注意到,我不想删除卷,并创build一个新的,因为这样做需要删除与我不想做的卷相关联的原始容器/图像。 谢谢你的帮助!

任何想法为什么rm不工作,当我尝试在容器外使用它

我相信发生了什么事是/data/*正在主机壳中进行评估。 因此,容器实际上是使用命令rm -rf /data/somefile /data/otherfile ...与主机上的/data目录中的文件列表一起运行的。 如果这些文件不匹配容器,那么它似乎没有删除任何东西。

您可以使用单引号来防止在主机shell中发生扩展。

 rm -rf '/data/*'