runc的版本號名稱都說了些什麼?

屈原、《進擊的巨人》,以及全球容器基礎設施

開啟opencontainers/runc的GitHub倉庫,右側Release欄裡赫然寫著:

“路漫漫其修遠兮,吾將上下而求索!”

這不是瀏覽器翻譯出了bug。屈原的《離騷》確實被標記在runc v1.4.0,這個支撐著全球容器生態的最核心底層元件的最新版本號旁邊。

如果你繼續往下翻,或者去看它的兄弟專案umoci,會發現這是一個持續了多年的傳統:維護者Aleksa Sarai(cyphar)習慣在每次釋出時,附上一句名言、歌詞或動漫臺詞作為版本副標題,典故囊括了莎士比亞、《銀河系漫遊指南》、《進擊的巨人》、普希金、布蘭妮,等等等等。

以下是runc與umoci全部60個版本名稱的出處整理。有些引用和版本內容之間有明確的對應關係,有些是維護者當時的心情寫照,也有些我實在猜不出為什麼選了這句。但無論如何,透過這些副標題,你一定能從中看到一部鮮活的開源軟體維護史。

runc

v1.4.0

“路漫漫其修遠兮,吾將上下而求索!”

——屈原《離騷》

釋出於2025-11-27,runc v1.4首個正式版,支援runtime-spec v1.3。

v1.3.4

“Take me to your heart, take me to your soul.”

(把我帶進你心裡,帶進你靈魂裡。)

—— Michael Learns to Rock《Take Me to Your Heart》(張學友《吻別》英文版)

釋出於2025-11-27,修復了v1.3.3引入的迴歸bug——由修bug引入的新bug。深夜裡修它的時候,耳機裡迴圈的大概就是這首。

v1.2.9

“Stars hide your fires, let me rest tonight.”

(群星啊,掩住你們的火光,讓我今夜得以安歇。)

——莎士比亞《麥克白》,有改動

原文是"Stars, hide your fires; / Let not light see my black and deep desires"——麥克白在謀劃弒君前的獨白。維護者把後半句改成了"let me rest tonight",殺意變成了睏意。

釋出於2025-11-27,同樣修復迴歸bug。

v1.4.0-rc.3, v1.3.3, v1.2.8

“その日、人類は思い出した。” / “奴らに支配されていた恐怖を” / “鳥籠の中に囚われた屈辱を”

(那一天,人類終於回想起了,曾經一度被他們所支配的恐怖,還有被囚禁於鳥籠中的那份屈辱。)

——《進擊的巨人》開場白

三個版本同日釋出(2025-11-05),緊急修復CVE-2025-31133、CVE-2025-52565、CVE-2025-52881——三個允許完整容器逃逸的高危漏洞。攻擊者可繞過runc對/proc檔案的寫入限制。

容器的本質就是把程序關在籠子裡,而容器逃逸就是字面意義上的"破牆而出"。《進擊的巨人》開場白拆成三句,分別標在三個並行維護分支的安全補丁上。連形式都講究。

v1.4.0-rc.2, v1.4.0-rc.1, v1.3.1, v1.2.7

這四個版本(2025年9-10月間)全部引用了大友克洋的《阿基拉》(AKIRA):

“私の役目は信じるかどうかではない。行うかどうかだ。”(我的職責不是去相信與否,而是去執行。)

“おめェもボスになったんだろぉ?”(你也成為老大了對吧?)

“この瓦礫の山でよぉ”(在這堆瓦礫山中啊)

“さんをつけろよデコ助野郎!”(給我加上“先生”啊,你這呆瓜!)

看起來維護者在這段時間集中看了一遍(或重溫了一遍)AKIRA。v1.3.1是1.3系列的首個補丁版本,修的全是1.3.0遺留的邊角問題——CPU親和性繼承、rootfs傳播狀態、seccomp代理洩漏,所以"在這堆瓦礫山中"是有幾分道理。

v1.3.2

“Ночь, улица, фонарь, аптека…”

(夜,街道,路燈,藥店……)

——亞歷山大·勃洛克(Alexander Blok),俄國詩人

釋出於2025-10-03,修復cgroup v1到v2的CPU權重轉換等小問題。勃洛克這首詩寫的是一種無盡迴圈的宿命感——夜、街道、路燈、藥店,然後藥店、路燈、街道、夜,永遠如此。拿來形容"修完舊bug來新bug"的日常倒是很合適。

v1.3.0

“Mr. President, we must not allow a mine shaft gap!”

(總統先生,我們絕不能允許出現礦井差距!)

——電影《奇愛博士》(Dr. Strangelove)

釋出於2025-04-29,v1.3首個正式版本。這個版本最大的意義不在技術細節,而在於runc開始採用全新的版本釋出和長期支援策略,正式宣佈v1.1系列停止支援。電影裡這句臺詞諷刺的是冷戰軍備競賽中的荒誕邏輯。

v1.3.0-rc.2

“Eppur si muove.”

(然而它依然在轉動。)

——伽利略(傳說)

釋出於2025-04-09,修復rc.1引入的迴歸問題:錯誤讀取了宿主機而非容器內的/etc/passwd來設定HOME環境變數。rc.1剛釋出就出了迴歸bug,但專案整體還是在向前走——“然而它依然在轉動”。

v1.2.6

“Hasta la victoria, siempre.”

(直到最後的勝利,永遠如此。)

——切·格瓦拉

釋出於2025-03-17,修復runc exec的time namespace處理和舊核心相容性問題。

v1.3.0-rc.1

“No tengo miedo al invierno, con tu recuerdo lleno de sol.”

(我不懼怕嚴冬,因為對你的回憶充滿了陽光。)

釋出於2025-03-04,1.3.0首個候選版本。包含對libcontainer的破壞性API變更、正式支援OCI runtime-spec 1.2.1、新的版本釋出與長期支援策略。一個承前啟後的大版本。

v1.2.5

“Мороз и солнце; день чудесный!”

(嚴霜與陽光;多麼美妙的一天!)

——亞歷山大·普希金《冬天的早晨》

釋出於2025-02-14。這個版本專門繞過了一個上游systemd的迴歸bug,該bug嚴重影響了NVIDIA GPU在容器中的工作負載。當一個折磨人的workaround終於跑通時,心情大概確實像嚴冬裡突然放晴。

v1.2.4

“Христос се роди!”

(基督降生了!)

——東正教傳統的聖誕節問候語

釋出於2025-01-07,東正教聖誕節當天。技術上則是一次無奈的妥協:v1.2.0出於安全考慮移除了tun/tap預設白名單,結果導致Docker和Podman大面積故障,這個版本把它加回來了。聖誕禮物。

v1.2.3

“Winter is not a season, it’s a celebration.”

(冬天不是一個季節,而是一場慶典。)

——Anamika Mishra,印度作家

釋出於2024-12-11,修復了共享根檔案系統中併發建立掛載點的EEXIST錯誤(曾導致BuildKit故障)和舊核心eBPF相容性退化。

v1.2.2

“Specialization is for insects.”

(專業分工是給昆蟲準備的。)

——羅伯特·海因萊因《時間足夠你愛》

釋出於2024-11-16,修復rootless容器在只讀cgroup環境下的刪除失敗問題。海因萊因原文的意思是"人類什麼都該會一點",用在runc這種需要適配千奇百怪宿主環境的基礎元件上倒也合理。

v1.2.1

“No existe una escuela que enseñe a vivir.”

(沒有一所學校能教人如何生活。)

釋出於2024-11-01,包含影響SELinux發行版的關鍵修復,並完全移除了剛在1.2.0中引入但侷限性過大的runc-dmz特性。剛加進去的東西又刪掉了——的確沒有學校能教你這些。

v1.2.0

“できるときにできることをやるんだ。それが今だ。”

(在能做的時候,做力所能及之事。就是現在。)

(原文:You gotta take what you can, when you can, while you can… and you gotta do it now.)

——美國電影《幾近成名》(Almost Famous)日語版臺詞

釋出於2024-10-22,1.2.0正式版。引入了基於overlayfs的/proc/self/exe克隆保護機制,完善了CVE-2024-45310的修復。

v1.1.15

“How, dear sir, did you cross the flood? By not stopping, friend, and by not straining I crossed the flood.”

(尊敬的先生,您是如何渡過這洪水的?朋友,我不停歇也不掙扎,就這樣渡過了洪水。)

——佛教經典《相應部》

釋出於2024-10-07,修復ppc64le下seccomp相容性問題和舊核心導致容器掛載洩漏到宿主機名稱空間的高危缺陷。不急不躁,見招拆招。

v1.2.0-rc.3

“The supreme happiness of life is the conviction that we are loved.”

(生活中最大的幸福是堅信我們被愛著。)

——維克多·雨果《悲慘世界》

釋出於2024-09-03,修復了CVE-2024-45310。

v1.1.14

“年を取っていいことは、驚かなくなることね。”

(變老的好處,就是不再會對事情大驚小怪了吧。)

——宮崎駿《哈爾的移動城堡》女主蘇菲經典臺詞

釋出於2024-09-03。v1.1系列的第十四個補丁版本了,什麼場面沒見過。

v1.2.0-rc.2

“TRUE or FALSE, it’s a problem!”

(不管是真還是假,反正這是個問題!)

釋出於2024-06-26,引入大量新特性和破壞性變更,最低編譯要求提升至Go 1.20。

v1.1.13

“There is no certainty in the world. This is the only certainty I have.”

(世界上沒有什麼是確定的。這是我唯一確定的事。)

——老普林尼(Pliny the Elder),古羅馬學者

釋出於2024-06-13,修復runc listrunc delete之間的競態條件等問題。唯一確定的就是程式碼裡永遠有不確定的bug。

v1.2.0-rc.1

“There’s a frood who really knows where his towel is.”

(那個傢伙真是個明白人,知道自己的毛巾在哪兒。)

——道格拉斯·亞當斯《銀河系漫遊指南》

釋出於2024-04-03,1.2分支首個候選版本。在《銀河系漫遊指南》裡,“知道自己毛巾在哪”意味著你是個靠譜的、準備充分的人。這個版本升級支援了OCI runtime-spec 1.2.0,引入id-mapped bind-mount,以及兩種新的CVE-2019-5736緩解機制。大版本出發前,先帶好毛巾。

v1.1.12

“Now you’re thinking with Portals™!”

(現在你正在用傳送門思維思考了!)

——經典解謎遊戲《傳送門》(Portal)宣傳語與成就名

釋出於2024-01-31,緊急修復CVE-2024-21626。這個漏洞的原理是runc內部洩漏的檔案描述符被利用來在宿主機和容器之間打開了一條通道——攻擊者字面意義上在兩個隔離空間之間開了一扇"傳送門"。

v1.1.11

“Happy New Year!”

(新年快樂!)

釋出於2024-01-02。就是字面意思。

v1.1.10

“Śruba, przykręcona we śnie, nie zmieni sytuacji, jaka panuje na jawie.”

(在夢中擰緊的螺絲,無法改變現實中的處境。)

——斯坦尼斯瓦夫·耶日·萊茨(Stanisław Jerzy Lec),波蘭思想家、詩人

釋出於2023-11-01,修復cgroup相關問題和tmpcopyup的umask許可權依賴。波蘭思想家的格言。該起來修bug了。

v1.1.9

“There is a crack in everything. That’s how the light gets in.”

(萬物皆有裂痕,那是光照進來的地方。)

——萊昂納德·科恩(Leonard Cohen)的歌曲《Anthem》

釋出於2023-08-11,修復v1.1.8引入的tmpfs迴歸bug(丟失sticky bit)。上個版本不小心砸出了一道裂痕,裂痕暴露了問題,問題指向修復。

v1.1.8

“海納百川 有容乃大”

——林則徐

釋出於2023-07-19。這個版本最大的亮點是正式加入了RISC-V(riscv64)架構支援。“海納百川"恰如其分。

v1.1.7

“Ночевала тучка золотая на груди утеса-великана.”

(一朵金色的雲彩,在巨人般的懸崖胸膛上過夜。)

——米哈伊爾·萊蒙托夫《懸崖》(俄國詩人)

釋出於2023-04-27,1.1系列最後一個計劃版本。

v1.1.6

“In this world nothing is certain but death and taxes.”

(在這個世界上,除了死亡和稅收,沒有任何事情是確定的。)

——本傑明·富蘭克林

釋出於2023-04-12,集中修復一系列cgroup問題。對底層執行時維護者來說,或許還有第三件確定的事:cgroup永遠有修不完的邊界bug。

v1.1.5

“囚われた屈辱は 反撃の嚆矢だ”

(那份被囚禁的屈辱,正是反擊的鏑矢。)

——《進擊的巨人》主題曲《紅蓮的弓矢》歌詞

釋出於2023-03-29,緊急修復三個容器逃逸與提權漏洞(CVE-2023-25809、CVE-2023-27561、CVE-2023-28642)。再一次,容器逃逸,以及《進擊的巨人》。

v1.1.4

“If you look for perfection, you’ll never be content.”

(如果你追求完美,你將永遠無法滿足。)

——列夫·托爾斯泰《安娜·卡列尼娜》

釋出於2022-08-25,緊急修復v1.1.3中意外引入的systemd裝置規則迴歸bug。追求完善反而破壞了原有功能,托爾斯泰說得對。

v1.1.3

“In the beginning there was nothing, which exploded.”

(起初什麼都沒有,然後砰的一聲就爆炸了。)

——特里·普拉切特《死神學徒》(常被用作對宇宙大爆炸的幽默調侃)

釋出於2022-06-09,修復s390x架構seccomp規則、systemd通訊機制等底層疑難雜症。一切原本風平浪靜,然後就爆了。

v1.1.2

“I should think I’m going to be a perpetual student.”

(我想我將永遠做個學生。)

——安東·契訶夫《櫻桃園》(劇中人物特羅菲莫夫臺詞)

釋出於2022-05-11,修復低危漏洞CVE-2022-29162(程序意外繼承非空Linux capabilities)。Linux的安全模型深不見底,誰都是永遠的學生。

v1.1.1

“Violence is the last refuge of the incompetent.”

(暴力是無能者最後的避難所。)

——阿西莫夫《基地》

釋出於2022-03-29,修復了多個在特定配置下不必要直接報錯退出的bug——讓runc遇事別動不動就"暴力"崩潰。

v1.1.0

“A plan depends as much upon execution as it does upon concept.”

(計劃的成功,執行與構思同等重要。)

——弗蘭克·赫伯特《沙丘》

釋出於2022-01-17,1.1系列首個正式版。

v1.1.0-rc.1

“He who controls the spice controls the universe.”

(誰控制了香料,誰就控制了宇宙。)

——弗蘭克·赫伯特《沙丘》

釋出於2021-12-14,引入RDMA cgroup支援、seccomp SCMP_ACT_NOTIFY等大量新特性。連續兩個版本引用《沙丘》,興許是趕上了維倫紐瓦電影版上映。

v1.0.3

“If you were waiting for the opportune moment, that was it.”

(如果你在等待絕佳的時機,那就是現在了。)

——《加勒比海盜》傑克·斯派羅船長經典臺詞

釋出於2021-12-06,修復CVE-2021-43784(雖然在現有版本中實際無法被利用)。防患於未然。

v1.0.2

“Given the right lever, you can move a planet.”

(給我一個支點,我能撬動整個地球。)

——阿基米德名言,有改動

釋出於2021-08-23,修復多個影響Kubernetes的問題,並實現了可重現構建。

v1.0.1

“If in doubt, Meriadoc, always follow your nose.”

(如果心存疑慮,梅里雅達克,跟著你的鼻子走就對了。)

——《指環王》甘道夫經典臺詞

釋出於2021-07-16,1.0分支首個補丁版本。五年磨一劍的1.0.0釋出後,真實生產環境立刻暴露出一堆新問題,只能憑直覺和經驗在黑暗中摸索排查。

v1.0.0

“A wizard is never late, nor is he early, he arrives precisely when he means to.”

(巫師從來不會遲到,也從來不會早到,他總是在他覺得合適的時候準時出現。)

——《指環王》甘道夫經典臺詞

釋出於2021-06-22。

從2016年的v1.0.0-rc1算起,runc的1.0正式版花了五年。五年,約422位貢獻者,無數個RC版本。社群調侃了無數次"1.0到底什麼時候發”,維護者用甘道夫的這句話做出了他的回應:巫師從來不會遲到。

v1.0.0-rc95

“Just when I thought I was out, they pull me back in.”

(就在我以為我已經金盆洗手的時候,他們又把我拉回去了。)

——《教父3》麥克·柯里昂經典臺詞

v1.0.0正式釋出前的這段RC歷程,本身就是一齣好戲。

釋出於2021-05-19,修復CVE-2021-30465。本以為RC階段快結束了,又被拽回來了。

v1.0.0-rc94

“Time is an illusion. Lunchtime doubly so.”

(時間是一種幻覺。午餐時間更是如此。)

——道格拉斯·亞當斯《銀河系漫遊指南》

釋出於2021-05-10,修復rc93的迴歸bug。RC的釋出週期長到讓人覺得時間本身都是幻覺。

v1.0.0-rc93

“I never could get the hang of Thursdays.”

(我從來都搞不定星期四。)

——道格拉斯·亞當斯《銀河系漫遊指南》

釋出於2021-02-04,宣佈進入特性凍結期。這個版本真的是在星期四釋出的。

v1.0.0-rc92

“Almost, but not quite, entirely unlike tea.”

(幾乎,但不完全,和茶毫無相似之處。)

——道格拉斯·亞當斯《銀河系漫遊指南》

釋出於2020-08-06,緊急熱修復。rc91"感覺快完美了",但帶了一個影響Docker的大bug。書中這句話形容的是一杯機器合成的、和茶毫無相似之處的難喝液體。

v1.0.0-rc91

“Just Hook a Right Over Here”

(就在這兒往右拐 / 就在這兒掛個鉤子)

釋出於2020-07-02。一句指路的日常口語,也是對該版本核心更新的雙關:在這個版本中,社群期待已久的OCI Hooks機制終於被合併了。

v1.0.0-rc90

“We Have To Go Back!”

(我們必須回去!)

——美劇《迷失》(Lost)男主角傑克·謝潑德經典臺詞

釋出於2020-06-02,這個版本的故事比引用本身更有意思。因為rc10在字典序上排在rc2前面,Go modules無法正確識別最新版本,維護者只好把版本號直接跳到rc90——程式碼和rc10完全相同,純粹是為了修版本號排序。“我們必須回去!“就是字面意思。

v1.0.0-rc10

“Procfs Strikes Back”

(Procfs的反擊)

——惡搞《星球大戰2:帝國反擊戰》(The Empire Strikes Back)

釋出於2020-01-24,熱修復CVE-2019-19921。本以為快發1.0了,procfs相關安全漏洞又給了一記重擊。

v1.0.0-rc9

“Watch out for that first step, it’s a doozy!”

(小心第一步,那可是個大麻煩!)

——《土撥鼠之日》(Groundhog Day)

釋出於2019-10-05,熱修復CVE-2019-16884。被困在無盡的RC迴圈裡,每次試圖邁向1.0的第一步都踩進新坑。

v1.0.0-rc8

“Oops, We Did It Again!”

(哎呀,我們又搞砸了!)

——布蘭妮·斯皮爾斯《Oops!… I Did It Again》

釋出於2019-04-26。rc7剛修完高危漏洞,結果引入了新的迴歸bug導致舊核心無法執行,很多使用者反而沒法升級來修漏洞。

v1.0.0-rc7

“The Eleventh Hour”

(最後時刻 / 危急關頭)

釋出於2019-03-28,緊急緩解CVE-2019-5736。眼看1.0要發了,在最後關頭爆出高危容器逃逸漏洞。

v1.0.0-rc6

“For Real This Time”

(這次是真的了)

釋出於2018-11-22,宣佈進入特性凍結期。維護者信誓旦旦"這次真的要發1.0了”——後來的事實證明,這個flag立了將近三年。

v1.0.0-rc5

“The Final Stretch”

(最後的衝刺)

釋出於2018-02-27。“最後的衝刺"又衝了三年多。

umoci

v0.6.0

“Please mind the gap between the train and the platform.”

(請注意列車與站臺之間的空隙。)

——地鐵的經典廣播提示語

釋出於2025-10-15,包含破壞性Go API變更。升級時請注意腳下安全。

v0.5.1

“🖤 Yuki (2021-2025)”

維護者Aleksa Sarai在釋出說明中寫道,過去四年裡他寫下的大部分程式碼,都是在這隻名叫Yuki的貓趴在他胸口打呼嚕時完成的。這個版本獻給她。

釋出於2025-09-06。

v0.5.0

“A wizard is never late, Frodo Baggins. Nor is he early; he arrives precisely when he means to.”

(巫師從來不會遲到,弗羅多·巴金斯。他也從來不會早到,他總是在他覺得合適的時候準時出現。)

——《指環王》

釋出於2025-05-21。和runc v1.0.0用了同一句臺詞。有些話值得說兩遍。

後記

這些手寫的副標題沒有任何實際功能。CI/CD流水線不會讀到它們,容器也不關心屈原說了什麼,只是,它們的存在本身就是一種宣告:這些程式碼不是從虛空中自動生成的,它們背後站著具體的、會疲憊、會暴躁、會在深夜迴圈播放《吻別》的人。