以编程方式删除docker容器中的文件/文件夹驻留

Jim*_*shi 17 docker

我目前正在探索如何以编程方式删除docker容器中的文件/文件夹.我知道我们可以使用docker cp将文件从容器复制到主机.但是,我正在寻找像docker mv或docker rm这样的东西,它允许我移动或删除docker中的文件/文件夹.

方案是,我们正在用Java编写自动化测试用例,对于一种情况,我们需要从服务器的日志文件夹中复制日志文件以断言测试用例写入的日志.我们使用docker cp来复制日志文件.但是它也包含旧测试用例的日志.所以我在考虑是否可以在执行测试用例之前删除日志文件.它确保我复制的日志仅由我的测试用例写入.还有其他方法吗?

小智 35

您可以使用以下命令从主机上运行的程序中删除文件

docker exec <container> rm -rf <YourFile>
Run Code Online (Sandbox Code Playgroud)

但是,如果因为容器从未被删除而存在旧文件,那么通常的做法是在所有测试套件执行完成后删除容器,

新工作应该创建新容器.

  • 如果容器没有运行怎么办?`docker cp ...`可以将文件复制到一个没有运行的容器中,所以我认为也可以从已停止的容器中删除_remove_文件,不是吗? (3认同)

San*_*Dey 5

在 docker 文件定义中,您可以使用

RUN rm [folder-path]

但是,使用 ADD 或 COPY 添加的任何内容仍会增加图像的大小。

编辑:要从主机上运行的外部程序访问正在运行的容器,请尝试此操作。

  1. 启动实例时将主机文件夹装载为卷。
  2. 在主机上运行脚本或程序以删除主机上所需的文件夹,这也会影响容器文件系统。