我在可以为 Jenkins 运行 CI-CD 的服务器上构建了 Docker 映像。因为有些构建使用 Docker,所以我在我的镜像中安装了 Docker,为了让内部 Docker 运行,我不得不给它--privilege
.
一切正常,但我想在 Openshift(或 Kubernetes)上的 docker 中运行 docker。问题在于获取--privilege
权限。
在 Openshift 上运行特权容器是否危险,如果是,为什么以及多少?
我在可以为 Jenkins 运行 CI-CD 的服务器上构建了 Docker 映像。因为有些构建使用 Docker,所以我在我的镜像中安装了 Docker,为了让内部 Docker 运行,我不得不给它--privilege
.
一切正常,但我想在 Openshift(或 Kubernetes)上的 docker 中运行 docker。问题在于获取--privilege
权限。
在 Openshift 上运行特权容器是否危险,如果是,为什么以及多少?
特权容器可以重新启动主机、替换主机的内核、访问任意主机设备(如原始磁盘设备)以及重新配置主机的网络堆栈等等。我认为这非常危险,而且并不比在主机上以 root 身份运行进程更安全。
我建议--privileged
根本使用可能是一个错误。如果你真的需要一个进程来管理主机,你应该在主机上直接(以 root 身份)运行它,而不是在阻止它试图做的事情的隔离层内。有一些有限的提升权限的东西很有用,但是如果你的容器需要mlock (2) 你应该获得--cap-add IPC_LOCK
你需要的特定权限,而不是打开整个世界。
(我的理解仍然是尝试在 Docker 中运行 Docker通常被认为是错误的,最好使用主机的 Docker 守护进程。当然,这也可以无限控制主机...)