是否可以像 docker 桌面一样安全地运行 docker 引擎而无需频繁使用 sudo?

是否可以像 docker 桌面一样安全地运行 docker 引擎而无需频繁使用 sudo?

运行 docker“引擎”是否需要sudo在开发过程中不断地运行?你就是这么做的吗?你sudo -i在操作docker的时候吗?或者你在 sudo 上设置计时器吗?有没有一种安全的方法可以更方便地操作它,例如启用密钥/通行证管理器?

背景

按照 Docker 网站的提示安装“桌面”(甚至“引擎”URL 端点也链接到桌面,尽管也是引擎),我遇到了一些情况,让我考虑仅在我的 Linux 上使用该引擎:

  • 不断被提示密码短语初始化后用于桌面凭据通过 GPG - 通过海马/通行证“固定”。
  • 如果使用引擎则需要sudo- 可以用团体虽然这是有风险
  • 运行两个 Docker 上下文:默认(引擎)和桌面 Linux - 可以切换但还是提示sudo
  • 引擎和桌面显示两个不同的列表docker context ls- 可能是解决了通过为同一个 docker 端点创建 root 用户上下文。

这让我更加意识到了 docker 中描述的差异文档论坛

答案1

1. 不像在主机上以 root 身份使用 docker

Docker 桌面(仅)更安全,因为它运行在虚拟机。这意味着具有 docker-desktop 访问权限的受损用户只能对 docker 容器和您的 docker 引擎造成损害,而不是对整个主机系统造成损害。

因此,在主机系统上以 root 身份运行的 docker 守护进程将始终存在此安全漏洞。这就是它的本质。

至少这一点,在没有 VirtualMachine 容器的主机上作为根守护进程运行,这总是会让您进入根终端:

docker run -it --rm --privileged --pid=host ubuntu:latest nsenter -at 1

2. 虚拟机中的 Docker 引擎(无桌面)

尽管您需要了解使绑定安装工作的语义,但没有什么可以阻止您自己在虚拟机中运行 docker。

3.非root Docker

您的另一个选择是以非 root 用户身份运行 docker。这应该意味着 docker 本身对您系统的访问权限要少得多,但它会给您在 docker 内运行的内容增加限制。看这里:https://docs.docker.com/engine/security/rootless/

  • 仅支持以下存储驱动程序:
    • overlay2(仅当运行内核 5.11 或更高版本,或 Ubuntu 风格的内核时)
    • fusion-overlayfs(仅当运行内核 4.18 或更高版本,并且安装了 fusion-overlayfs 时)
    • btrfs(仅当使用内核 4.18 或更高版本运行,或者使用 user_subvol_rm_allowed 挂载选项挂载 ~/.local/share/docker 时) -vfs
  • 仅当与 cgroup v2 和 systemd 一起运行时才支持 Cgroup。请参阅限制资源。
  • 不支持以下功能:
    • 应用装甲
    • 检查站
    • 覆盖网络
    • 暴露 SCTP 端口
  • 要使用 ping 命令,请参阅路由 ping 数据包。
  • 要公开特权 TCP/UDP 端口 (< 1024),请参阅公开特权端口。
  • docker Inspect 中显示的 IPAddress 是在 RootlessKit 的网络命名空间内命名的。这意味着如果不输入网络名称空间,则无法从主机访问 > - IP 地址。
  • 主机网络(docker run --net=host)也在 RootlessKit 内部命名。
  • 不支持 docker“data-root”挂载 NFS。此限制并非特定于无根模式。
4. 创建一个专用的、受密码保护的 docker 用户

创建一个您可以访问的专用用户

sudo -iu docker-admin-user

相关内容