關於OpenShift映象使用的uid問題

2022-04-05 11:55:11 字數 875 閱讀 4757

在客戶那裡很多時候遇到過外部的image作為pod執行後出現的各種因為許可權訪問導致的失敗。找到官方文件對這個問題有一些說明。

預設情況下,openshift容器平台使用任意分配的使用者id(arbitrary user id)執行容器。

這提供了額外安全性,避免了由於容器引擎漏洞而導致逃逸容器的程序,從而實現了對主機節點的公升級許可權。

為了支援image以任意使用者身份執行,映像中的程序可能寫入的目錄和檔案應歸根組所有,並且可由該組讀取/寫入。 要執行的檔案還應該具有組執行許可權。

在dockerfile中新增以下內容可設定目錄和檔案許可權,以允許根組中的使用者在構建的映像中訪問它們:

run chgrp -r 0 /some/directory &&\

chmod -r g=u /some/directory

也就是說,你需要在容器中用到的目錄,設定group為0(根組),同時講使用者的許可權設定成組的許可權去實現。

因為容器使用者始終是根組的成員,所以容器使用者可以讀取和寫入這些檔案。

根組沒有任何特殊許可權(與根使用者不同),因此這種安排沒有安全性問題。

另外,容器中執行的程序不得偵聽特權埠(低於1024的埠),因為它們沒有以特權使用者身份執行。

如果需要容器中的使用者以特權使用者執行,可以做如下設定

oc create serviceaccount runasanyuid

oc adm policy add-scc-to-user anyuid -z runasanyuid -ntest

oc adm policy add-scc-to-user privileged -z runasanyuid -ntest

然後將runasanyuid的sa設定到deployment中。

OpenShift推送本地映象到映象倉庫

一 建立push許可權,新增registry oc create serviceaccount registry n default oc adm policy add scc to user privileged system serviceaccount default registry 二 新...

OpenShift 使用自帶registry

獲取docker registry位址 首先需要知道docker registry 的 route oc get route all namespaces grep registry docker registry default.router.default.svc.cluster.local 新...

使用 mysql docker 映象

命令 dockor pull mysql tag 案例 sudo dockor pull mysql 5.7 sudo dockor images啟動 mysql 伺服器,命令 sudo docker run name some mysql e mysql root password my secr...