Open Container項目旗下的輕量級通用運行時容器runC最近公布了1.0發布候選版。runC是一種按照OCP規范生成和運行容器的CLI工具,代碼已發布至GitHub。
容器技術逐漸受到用戶和社區的歡迎,Linux基金會早在2015年6月就成立了OCI(Open Container Initiative)組織,旨在圍繞容器格式和運行時制定開放的標準。該組織已得到包括Amazon、華為、Google、Microsoft等云供應商的支持。源自Docker的runC是通過開放容器格式標準(OCF, Open Container Format)制定的一種具體實現。
runC的可嵌入特性使得容器可以作為runC的子進程啟動,并能在無需運行Docker代理程序的情況下將其嵌套至各種其他系統中。runC以libcontainer為基礎開發而來,這種容器技術目前正驅動著全球數百萬Docker引擎,用戶可以直接通過runC運行Docker映像。
功能和主要改進
runC的目標是讓用戶隨時隨地使用標準化的容器,其中包含大量廣受歡迎的功能和特性,例如:
完整支持Linux命名空間,包括用戶命名空間。 原生支持Linux的所有安全功能,包括Selinux、Apparmor、seccomp、control groups、capability drop、pivot_root、uid/gid dropping等。 原生支持實時遷移和Windows 10容器。 計劃為Arm、Power、Sparc等架構提供原生支持,并直接得到Arm、Intel、Qualcomm、IBM,以及整個硬件制造商生態系統的參與和支持。 計劃為前沿硬件功能提供原生支持,例如DPDK、sr-iov、tpm、secure enclave等。 可移植的性能配置文件,以及成為正式標準的配置格式。此次公布的1.0發布候選版是OCI運行時規范和runC 1.0的首個候選版本,該版本針對創建和啟動等命令進行了較大調整。
容器的創建和啟動過程現已拆分為兩個步驟,通過這樣的設計,上層系統可以在用戶定義的過程啟動前修改容器內容。如果依然希望像之前的版本那樣使用runC,則可以使用runc run命令。在該版本中,還可以使用runc state命令獲取容器的狀態信息。另外可以通過新增的ps命令查看容器內的進程:
除此之外,本次發布的1.0候選版還在下列幾個方面有所改進:
為更多架構提供了seccomp支持更穩定的狀態輸出增加了用于動態更新容器資源的update命令大量其他改進和 man 頁面目前可以將1.3版以上的Docker映像與runC配合使用。此外runC還可配合systemd使用。
社區觀點
runC是一種便攜的輕量級容器運行時,其中包含了Docker用于與系統中和容器有關的功能進行交互的全部plumbing代碼。與生俱來的安全性,適合當今大規模生產環境中的使用,以及與Docker平臺其他組件的無關性(純粹的容器運行時)使得這一技術獲得了社區成員的好評。
Linux基金會技術顧問委員會主席兼Parallels公司服務器虛擬化CTO James Bottomley談到該技術時說:“我們終于可以用統一的方式操作libcontainer 了。通過這個庫,我們可以用更為細化的方式將容器功能暴露給[用于運行新一代Docker類應用的]應用程序,同時可以讓我們在各種產品中通過更無縫的方式使用我們自己開發的各類工具。”