Docker 问题:删除绑定安装的卷

Docker Issue: Removing a Bind-Mounted Volume

对于我犯的这个简单错误,我无法在网上找到任何帮助,所以我正在寻求帮助。我正在使用服务器在容器中 运行 一个 docker 图像,但我输入错误并给自己带来了烦恼。我运行命令

docker run --rm -v typo:location docker_name

因为我在挂载目录时有错字,它在主机上创建了一个目录,当容器结束时,该目录仍然存在。我试图删除它,但我只是收到错误

rm -rf typo/
rm: cannot remove 'typo': Permission denied

我现在知道为了安全起见我应该使用 --mount 而不是 -v,但伤害已经造成;如何在无法访问创建它的容器的情况下删除该目录?

提前致歉,我的知识docker很有限。我主要是为了使用特定图像而学会了它,然后我做了一堆 Google 搜索来完成剩下的工作。

Docker 安全的第一条规则是,如果您可以 运行 任何 docker 命令,您就可以获得对整个主机的不受限制的 root 访问权限。

所以你可以通过运行安装一个容器来解决这个问题,运行安装为根目录并绑定安装父目录,这可以删除有问题的目录:

docker run \
  --rm \
  -v "$PWD:/pwd" \
  busybox \
  rm -rf /pwd/typo

I do not have sudo permissions

你可以解决这个问题

docker run --rm -v /:/host busybox vi /host/etc/sudoers

(这在很多地方都有影响。不要随意将用户添加到 docker 组,尤其是在多用户系统上,因为他们可以轻松获得 root 访问权限。小心发布主机的 Docker 套接字插入到容器中,因为容器随后可以对主机进行 root;也许重新设计您的应用程序以避免需要它。绝对不要在网络上公开 Docker 套接字。)