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 套接字。)
对于我犯的这个简单错误,我无法在网上找到任何帮助,所以我正在寻求帮助。我正在使用服务器在容器中 运行 一个 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 套接字。)