如今,Docker 至少可以通过两种方式安装,Docker 安装程序在启动时提供了一种选择:
- 传统模式(
docker
从 root 执行,或使用sudo docker
) - 也无根模式(从非 root 和非 sudoer 执行 docker)
有些人错误地在当前用户中“无根”安装 Docker(例如: id:gid 1000:1000
),认为“这是从普通用户使用 运行 Docker 的选项sudo docker
,然后他们发现自己选择了错误的选择,并且他们想要回滚到传统版本(奖励点:无需删除该用户)他们发现它不再与他们的工作流程兼容,例如因为绑定安装始终在root:root
容器内部安装(请参阅具有非主要组访问权限的无根 docker 中的权限被拒绝)。
有关如何删除传统 Docker 的文档,但似乎不足以在保留用户的同时从现有用户卸载无根版本(请参阅https://github.com/docker/docker-install/issues/166)。
问题:
如何从用户中卸载“Docker rootless”并保留该用户?例如,在 Ubuntu 或基于 Debian 的系统中?
目的:切换到常规Docker,保留用户。谢谢!
我尝试了上述问题的各种意见,例如通过更改“Docker context”,但由于某种原因这对我来说还不够。或者无论如何,我无法弄清楚实现目标的最小顺序是什么。我从这个问题中遵循了太多的提示。最好能够了解最少的步骤,至少在基于 Ubuntu 或 Debian 的系统中是这样。
额外说明:
$HOME/bin/
在我的环境中不存在(因此,这不相关:https://github.com/docker/docker-install/issues/166#issuecomment-606582544)
答案1
我今天也遇到了这个问题,非常令人沮丧,所有建议都不起作用,但我确实解决了它。首先,GitHub问题中的评论说“rootless不使用系统包”是不正确的,docker是通过apt为我安装的。我不明白为什么会出现这个问题,也不明白为什么我需要采取措施来解决这个问题,但它很简单:
- 删除泊坞窗:
sudo apt remove docker* containerd*
- 重新开始!删除 docker 后,我仍然
dockerd-rootless
在后台运行,直到重新启动。 - 从 apt 软件包重新安装 docker(我使用了https://get.docker.com脚本)
- 添加
DOCKER_HOST=unix:///var/run/docker.sock
.bashrc
就像我说的,不知道为什么DOCKER_HOST
需要设置在这里。当我的环境默认为无根时,它并不存在于我的环境中,并且我的其他从一开始就已扎根 Docker 的服务器都没有它。但它现在有效了,所以我希望这会有所帮助!