在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中runc是什麼的詳細內容,更多請關注TW511.COM其它相關文章!