在docker中,RunC是一個根據OCI標準建立並運行容器的CLI tool,一個遵循OCI標準的用來運行容器的命令列工具。 runC是docker中最核心的部分,容器的建立、運行、銷毀等等操作最終都會透過呼叫runc完成。
本教學操作環境:linux5.9.8系統、docker-1.13.1版、Dell G3電腦。
OCI 定義了容器執行時間標準,runC 是 Docker 依照開放容器格式標準 Open Container Format, OCF 制定的一種具體實作。
該專案從 Docker 的 libcontainer 中遷移來,實現了容器啟動/停止、資源隔離等功能,所以,可以直接透過該工具運行容器。
所謂容器運行時(Container Runtime) 包含了容器管理和容器鏡像,Open Container Initiative, OCI 是容器運行時的工業標準,包括了:
A) 執行時期標準runtime-spec;
B) 容器映像標準image-spec 。
簡單來說,容器鏡像標準定義了容器鏡像的打包形式,而運行時標準定義瞭如何去運行一個容器。
RunC 是一個根據OCI標準創建並運行容器的CLI tool,是一個遵循 OCI 標準的用來運行容器的命令列工具,它也是一個 Runtime 的實作。
Docker
在舊版本裡,使用需要呼叫docker-runc
,而最新的CE 版本裡,直接修改為了runc
指令。
RunC 作為容器的最底層運作環境,其上層透過 Docker 進行管理。
runC就是docker中最為核心的部分,容器的創建,運行,銷毀等等操作最終都會透過呼叫runc完成。
RunC 作為容器的運行態,不包含鏡像的管理,如果直接使用,需要先準備好鏡像,這裡直接使用已經建置好的 BusyBox 範本。
OCI Bundle
OCI Bundle 是指滿足OCI 標準的一系列文件,這些文件包含了運行容器所需的所有數據,它們存放在一個共同的目錄,該目錄包含以下兩個項目:
config.json
包含容器運行的配置資料;如果主機上安裝了 Docker,那麼可以使用 docker export
指令將已有映像匯出為 OCI Bundle 的格式。
產生 rootfs
直接使用 Docker 中的 BusyBox 範本。
設定檔
#在rootfs
目錄下,包含了常見的二進位文件,除了根目錄之外,還需要一個config.json
設定文件,可以透過runc spec
命令產生設定模板。
詳細的設定可以參考 https://github.com/opencontainers/runtime-spec/blob/master/spec.md
將設定檔中的"terminal": true
修改為false
,否則會在創建的時候會寶cannot allocate tty if runc will detach without setting console socket
報錯。
另外,因為關閉了終端,所以將指令修改為 "args": [ "sleep", "10000" ],
參數。
啟動
在啟動了之後,可以透過ps aux | grep sleep
看到具體的命令。
就是將一個容器進行CheckPoint 操作,並取得一系列文件,然後再在其它機器上啟動。
推薦學習:《docker影片教學》
以上是docker中runc是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!