我可以作为一个有用的助手帮您进行翻译。下面是需要翻译的内容:
这个方法虽然有效,可以删除内容,但它不可编写脚本。您有什么想法吗?为什么 rm 命令在容器外无法正常使用?如何成功地删除卷的内容?请注意,我不想删除卷并创建一个新的,因为这样会导致删除与卷相关联的原始容器/映像,而这正是我不想做的。谢谢您的帮助!
我有一个由 docker-compose.yml 文件创建的卷。我们称它为 my_volume,与之关联的容器为 my_container。我想脚本化删除该卷的内容。以下所有操作均假设已停止但未删除 my_container 容器。
我可以使用以下命令列出卷的内容:
docker run --rm -v my_volume:/data/ ubuntu ls -la /data
这个方法有效,接下来我尝试使用以下命令删除"data"文件夹的内容:
docker run --rm -v my_volume:/data/ ubuntu rm -rf /data/*
没有报错信息显示,所以看起来一切都成功了,但当我再次列出卷的内容时,卷中的数据并没有被删除。
我可以通过进入容器,然后执行以下操作来完成删除:
docker run --rm -it -v my_volume:/data/ ubuntu /bin/bash
然后从容器内部执行:
rm -rf /data/*
这个方法虽然有效,可以删除内容,但它不可编写脚本。您有什么想法吗?为什么 rm 命令在容器外无法正常使用?如何成功地删除卷的内容?请注意,我不想删除卷并创建一个新的,因为这样会导致删除与卷相关联的原始容器/映像,而这正是我不想做的。谢谢您的帮助!
rm -r /var/lib/docker/volumes/my_volume/_data/*
清除你的卷。 - lvthillodocker run --rm -v my-volume:/data/ ubuntu rm -rf data/
,但会出现设备忙的警告/错误。另一个“解决方案”是分别删除所有内容(但只有在您始终知道卷包含什么时才能这样做:docker run --rm -v my-volume:/data/ ubuntu rm -rf data/dir1 data/dir2 data/file1 ..
)。 - lvthillo