运行 docker“引擎”是否需要sudo
在开发过程中不断地运行?你就是这么做的吗?你sudo -i
在操作docker的时候吗?或者你在 sudo 上设置计时器吗?有没有一种安全的方法可以更方便地操作它,例如启用密钥/通行证管理器?
背景
按照 Docker 网站的提示安装“桌面”(甚至“引擎”URL 端点也链接到桌面,尽管也是引擎),我遇到了一些情况,让我考虑仅在我的 Linux 上使用该引擎:
- 在使用 GPG初始化凭证通行证时,不断提示输入桌面密码 - 使用 Seahorse/pass 进行“固定”。
- 如果使用引擎,则需要- 可以通过一组
sudo
修复,尽管这是有风险的。 - 运行两个 docker 上下文:默认(引擎)和桌面 Linux - 可以切换但仍然提示
sudo
。 - 引擎和桌面显示两个不同的列表
docker context ls
- 可以通过为同一 Docker 端点创建根用户上下文来解决。
这让我更加意识到了 docker文档和论坛中描述的差异。
1. 不像在主机上以 root 身份使用 docker
Docker桌面(仅)更安全,因为它运行在虚拟机中。这意味着具有 docker-desktop 访问权限的受损用户只能对 docker 容器和您的 docker 引擎造成损害,而不是对整个主机系统造成损害。
因此,在主机系统上以 root 身份运行的 docker 守护进程将始终存在此安全漏洞。这就是它的本质。
至少这一点,在没有 VirtualMachine 容器的主机上作为根守护进程运行,这总是会让您进入根终端:
2. 虚拟机中的 Docker 引擎(无桌面)
尽管您需要了解使绑定安装工作的语义,但没有什么可以阻止您自己在虚拟机中运行 docker。
3.非root Docker
您的另一个选择是以非 root 用户身份运行 docker。这应该意味着 docker 本身对您系统的访问权限要少得多,但它会给您在 docker 内运行的内容增加限制。请参阅此处: https: //docs.docker.com/engine/security/rootless/
4. 创建一个专用的、受密码保护的 docker 用户
创建一个您可以访问的专用用户