搜尋

搜尋結果

Docker 中的非管理員用户 Docker non-root user
科技新知
MacauYeah・2025-03-14

Container USER為何重要 在制作Docker Image的過程中,有時會接觸到 USER 這個設定。這事關到最後的 Docker Container內部運行的那個 user 到底會有什麼權限。大家也要知道,Docker Container 其實也只是一個 Linux 上的程序,也就是如果Container內權限過大,也有機會從 Container 內部存取到 Host上的資料。 一般情況下,Docker Image 預設的 USER 就是 root,最基礎的base image都是一樣。而我們想換,其實也相當簡單,就像Linux上起User一樣,只要經指令RUN adduser xxx 或RUN useradd xxx 也可以在 Docker Image 中創建帳號和 home 資料夾,之後就隨時經USER xxx來切換 實際上是不是這麼簡單 如果你將要Container中執行的程序,是一個binary,平常你在Linux中也是以 nonroot 方式執行,那麼是的,就是那麼簡單。例如你執行系統中的java, node, python,原本在Linux中就已經是誰都可以,那麼你的docker container 也應該沒有難度。 但如果原本的安裝包,預設是由system service來啟動,我們就要花點力氣,看看那個service是怎樣呼叫binary的,然後就一步一步模擬它的做法。例如筆者有打包的codeserver,預設是system service啟動,但它也有提共binary的執行方法,安定好home資料夾後,我們也可以手動啟動。 泛生之檔案權限問題 上述binary的情境之所以簡單,是因為大部份情況下,我們都只對於container 內部運行考慮即可,因為預設投產情況下的運作模式,都是隨時起、隨時刪、隨時砍掉重練,只要container內部運作可以自給自足,就可以了。Docker Swarm的運作也是如此,所以它不預期有的持久化資料權限的問題。 而持久化資料權限的問題,其實早在單個Linux伺服器就已經存在。同一個伺服器中,不同process就有不同的UID,當他們需要共同讀寫某些檔案,就會設定多人權限。同理,當多個Container要共同檔案,也是同樣問題。在討論共享檔案之前,我們先看看預設 Docker Storage Mount 會給我們什麼權限。 如果是bind mount,bind mount的權限預設會是Host內的檔案或者資料夾的權限。 如果Host是root,container內是nonroot,container有機會無法讀寫bind mount內的檔案。 留意權限設置就可以解決問題 如果Host是nonroot,但container 內是root,從container內生成的檔案,Host的nonroot user就無法使用。 Host是nonroot的話就一定無解,Host至少有sudo權限,臨時變成管理員,去修正問題。 如果host和container也是nonroot,但UID不夾,其實也不能交換使用。 跟上述一樣,最後要靠sudo來解決問題。 如果host和container也是root,就沒有權限問題,但就有安全性的風險。 如果是volume mount,就還是看看 mount path 是docker image layer中現有的 path還是新起的path 大部份手動建立的named volume都是root 經docker compose起的named volume滿足以下條件的話,將會是nonroot。 docker image 中的已有該path存在。 named volume未存在,docker compose會把對應path的內容在初次建立時抄到named volume 中。 例如ubuntu24.04中的homeubuntu,存在於docker image中,它的擁有者就是UID 1000,我們經docker compose HOME_VOLUMEhomeubuntu,在HOME_VOLUME建立時,就會是UID 1000。但如果是 NOT_EXISTShomeubuntusomethingNotExists,那麼NOT_EXISTS建立時,也會是root 上述討論的Storage mount是集中在單機情況下,使用HOST OS的本地儲存。若現在的場境是多機共享的share storage,就會更麻煩,還要看看那個share storage本身的屬性。例如常見的Linux NFS,其實有指定的權限,跟NFS的Login權限有關,如果你的process本身對檔案權限很敏感,就請先不要挑戰NFS例如postgresql。 Rootless mode Rootless 模式 Rootless 模式指的是在Host中,執行Container的使用者,不需要是管理員,筆者就常用於開發環境中。投產環境中反而沒有聽過這樣的討論,因為投產環境很少可以讓非管理員去執行這麼重要的環境管理。 雖然只是開發環境,但這像前述的bind mount討論中,如果Host是nonroot,但container 內是root,又或是兩者nonroot,但UID不夾,也會出現權限問題。無腦的將host user加入docker group,只可以讓非管理員可以運行docker,但解決不了權限問題。 真正有條件解決的,可能就會向linux subgroup的方式發展。暫時筆者用得比較順的rootless mode,可以無腦用的,不是docker,是podman。有興趣的朋友可以經podman官網看看教學,它給筆者的感覺就像是自動轉換UID。 podman rootless mode 想看更多 筆者已經將過去的文章重新整理成gitbook,有興趣睇更多的讀者,可以來筆者的gitbook再翻一翻 httpsmacauyeah.github.ioAProgrammerPrepares

2024年4月29日-5月6日
玄學星相
熊神進・2024-04-28

鼠:清明負能量很高, 四處都是怨聲載道, 感情方面不太穩定,容易跟伴侶之間容易吵架爭執,發生衝突,甚至分居分手等,務必相互忍讓諒解,須知百年修得共枕眠。事業上無捷徑可走,切不可投機取巧,處事以穩健爲上,沉著、冷靜地處理突發事件,方可以在事業上取得不錯的成績。 牛:本周會變得非常辛勞,會遇到很多需要自己忙活的事情,還會嚴重擠壓他們的個人休息時間。工作運勢不佳,心裏感到悶悶,龐大的工作量成了心頭的重擔,不僅會有趕工的情形出現,甚至常常遇上突發的臨時狀况,令你必須更改原先規劃好的行程,讓你感到無奈。幸運顔色:金黃色、灰棕色。 虎:清明即將結束, 建議掃墓, 如果做不到的話,就要誠心燒「祖先功德香」給先人朋友。事業上易因外在因素與人事驟變,使不確定性增加。但不乏有利契機出現,若能及時把握,不失爲開拓新局的一周。戀愛中女生, 如果不想在清明節令懷孕, 那麽, 避孕可以優卮考慮。 本周幸運色:淡黃色。 兔:本周注意不要過分壓抑不滿情緒,這樣會影響你愛情的發展,應該向愛侶坦白一點,注意星期四和五你們容易發生爭執。財運方面體現在生活中,想要買什麽東西一定要規劃好,不要買一些用不到的,建議養成記帳的習慣,即使是小錢也要不能隨便花。受到「天狗」星的影響,是非較多,但貴人亦不少,做起事來格外順心。 龍:本周應盡可能的遠離是非,應儘量避免因口舌爭執生是非,提防小人背後加害。工作上不要輕易答應對方在限期內完成任務,否則會騎虎難下。事業要有進展,就需要聽聽別人的想法,姿態放低一點,和夥伴一起合作,才能够事半功倍。財運很好,可有不錯的收入,甚至是不在預期中的進帳。 蛇:因命宮中有衆多的吉星拱照,在運程上會大有起色。社交宮受水星的衝擊,上司對你毫不留情地評論,但你也不需要太過計較,別人無謂的說話不必放在心中。愛侶正爲你擔心,你必須多給對方一點安全感,要抽多點時間陪伴對方。財運方向:正南、西北、東北。幸運數位:4、8。 馬:入夏之後,馬人的運程浮沉不定,波動甚大,而最受影響的是財運。感情方面本周會揭開新的一頁,往日的陰雲一掃而光,重現歡笑,健康良好,身心康泰。人緣關係很糟糕,不管是與家人朋友,還是合作夥伴,都會出現很多問題,自身也會極爲煩惱。財務不穩,有突發疾病的侵襲。愛情是亦步亦趨。注意身體,適當减少交際應酬,多留點時間與家人相處可增進情感。 羊:工作將會在愉快的氣氛中進行,不需要半天便完成了一個非常艱巨的任務。你很久沒有和情人單獨見面,本周是個好時機,如果你能好好把握,說不定可以挽回對方的心。財運亨通,適合投資獲利,但偏財不宜强求,應適可而止。清明節的日子最好去掃墓,如果不介意的話,就穿一些素色衣服。晚上如果有空,請做一次烟供,非常有意思。 猴:如果勇于創新,積極主動地爭取時機,就會創造出輝煌的成績。工作上的危機有所消除,是生肖猴奮發向上、努力進取的大好時機。愛情上小心不要陷入三角關係之中,必須儘快找出結論和解决方法,以免累己累人。健康上可能有胃腸炎。預防色欲敗身、桃色糾紛、夫妻反目、意氣用事。上班一族這兩個年較易有晋升機會,故亦要努力爭取。 鶏:本周事業運上揚,會得到別人的認同,尤其從事創作性行業的人士,可以發揮的空間大增,工作亦有超水平的表現。財運方面會有頗豐的收穫,只可惜有破財之灾,錢財易遭遇破損,不宜借貸,不宜投資!一定要注意謹慎理財,以免出現嚴重財務危機。「羊刃」入宮也要注意手脚損傷,開車人士也要留意交通安全。 狗:本周因爲公事令你忙個不了,事業上會有新的挑戰考驗你的能力。注意繁重的工作令你身體出現問題,不必要的宴會可免則免,少去爲佳。與人馬座的朋友談心事,可以减輕壓力。喪門入宮,預防家人親友病厄隱患(身體狀况),注意心臟血液循環、筋骨關節隱患,不利探病,暫勿吊喪、行喪、送喪、戒爭鬥。 猪:近來工作未如理想,不要花太多時間等待別人幫助,與其求人,不如親力親爲,注意星期二會跟同事有口角之爭。朋友運不佳,討厭的人經常出現在你身邊令你不快。感情人緣佳,在交際應酬、男女關係上皆無往而不利,單身者有望覓得佳緣,然而已婚或者戀愛中的屬猪人,則要維護好雙方感情,容易因小事而起波瀾,影響感情和睦。