簡體   English   中英

在 Openshift 上的 docker 中運行 docker 是否安全?

[英]Is it safe to run docker in docker on 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 守護進程。當然,這提供了對主機的無限控制......)

簡而言之,答案是否定的,它不安全。 由於潛在的內存和文件系統損壞,Docker-in-Docker 尤其遠非安全,甚至掛載主機的 docker socket 在任何環境中都是不安全的,因為它有效地賦予了構建管道 root 權限。 這就是為什么要制作BuildahKaniko 之類的工具,以及構建 S2I 之類的圖像的原因。

特別是 Buildah 是 Red Hat 自己的用於在容器內構建的工具,但截至目前,我相信它們仍然無法完全無特權地運行。

此外,在 Openshift 4 上,您根本無法運行 Docker-in-Docker,因為運行時已更改為 CRI-O。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM