【问题标题】:Docker Issue: Removing a Bind-Mounted VolumeDocker 问题:删除绑定安装的卷
【发布时间】:2021-09-21 18:15:26
【问题描述】:

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

docker run --rm -v typo:location docker_name

由于我的挂载目录有错字,所以在主机上创建了一个目录,当容器结束时,该目录仍然存在。我试图删除它,但我得到了错误

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

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

我提前道歉,我对docker的了解非常有限。我主要学会了使用特定的图像,然后我做了一堆谷歌搜索来完成其余的工作。

【问题讨论】:

  • 您应该可以使用sudo 获得root 权限。您显示的语法 docker run -v name:/container/path 创建了一个 Docker 命名卷,但它在主机上没有可访问的位置; docker volume rm typo 会删除它。
  • @DavidMaze 所以,我没有sudo 权限,所以这个选项对我来说不可行。命令docker volume rm typo 返回错误Error: No such volume: typo。从这里开始,我不知道如何继续。

标签: docker command-line docker-volume mounted-volumes


【解决方案1】:

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

因此,您可以通过运行容器、以 root 身份运行并绑定挂载父目录来解决此问题,这样可以删除相关目录:

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

我没有sudo 权限

你可以解决这个问题

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

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

【讨论】:

  • 这正是我所需要的;绑定安装并从码头移除工作。非常感谢!
猜你喜欢
  • 2015-11-15
  • 2019-09-14
  • 2021-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-23
相关资源
最近更新 更多