我目前正在探索如何以编程方式删除docker容器中的文件/文件夹。我知道我们可以使用docker cp将文件从容器复制到主机。但是,我正在寻找像docker mv或docker rm这样的东西,它允许我移动或删除docker中的文件/文件夹。
场景是,我们正在用Java编写自动化测试用例,在一种情况下,我们需要从服务器的日志文件夹中复制日志文件,以断言测试用例写入的日志。我们使用docker cp来复制日志文件。但是它也包含旧测试用例的日志。所以我在考虑是否可以在执行测试用例之前删除日志文件。它确保我复制的日志仅由我的测试用例写入。还有其他方法吗?
答案 0 :(得分:27)
您可以使用以下命令从主机上运行的程序中删除文件
docker exec <container> rm -rf <YourFile>
但是,如果因为容器从未被删除而存在旧文件,那么通常的做法是在所有测试套件执行完成后删除容器,
新作业应该创建新容器。
答案 1 :(得分:2)
您可以访问容器bash控制台
#console control over container
docker exec -it a5866aee4e90 bash
然后,当您在容器内时,您可以使用控制台执行任何操作。 我使用此命令来查找和重命名我的jboss deployments目录中的文件。修改它如何为您服务。你也可以删除mv使用rm
的文件find /home/jboss/jbossas/standalone/deployments -depth -name "*.failed" -exec sh -c 'mv "$1" "${1%.failed}.dodeploy"' _ {} \;
答案 2 :(得分:2)
在泊坞窗文件定义中,您可以使用
RUN rm [folder-path]
但是,使用ADD或COPY添加的任何内容仍会增加图像的大小。
编辑:要从主机上运行的外部程序访问正在运行的容器,请尝试此操作。