首頁 >運維 >Docker >docker中runc是什麼

docker中runc是什麼

青灯夜游
青灯夜游原創
2021-12-30 15:45:576600瀏覽

在docker中,RunC是一個根據OCI標準建立並運行容器的CLI tool,一個遵循OCI標準的用來運行容器的命令列工具。 runC是docker中最核心的部分,容器的建立、運行、銷毀等等操作最終都會透過呼叫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 指令。

docker中runc是什麼

RunC 作為容器的最底層運作環境,其上層透過 Docker 進行管理。

runC就是docker中最為核心的部分,容器的創建,運行,銷毀等等操作最終都會透過呼叫runc完成。

獨立運行

RunC 作為容器的運行態,不包含鏡像的管理,如果直接使用,需要先準備好鏡像,這裡直接使用已經建置好的 BusyBox 範本。

OCI Bundle

OCI Bundle 是指滿足OCI 標準的一系列文件,這些文件包含了運行容器所需的所有數據,它們存放在一個共同的目錄,該目錄包含以下兩個項目:

  • config.json 包含容器運行的配置資料;
  • 容器的root filesystem 。

如果主機上安裝了 Docker,那麼可以使用 docker export 指令將已有映像匯出為 OCI Bundle 的格式。

產生 rootfs

直接使用 Docker 中的 BusyBox 範本。

----- 下载最新的版本
$ docker pull busybox

----- 创建rootfs
$ mkdir rootfs
$ docker export $(docker create busybox) | tar -C rootfs -xvf -

設定檔

#在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" ], 參數。

啟動

----- 创建容器并查看状态
# runc create mybusybox
# runc list

----- 启动容器,并查看状态
# runc start mybusybox

----- 删除容器
# runc delete mybusybox

在啟動了之後,可以透過ps aux | grep sleep看到具體的命令。

常用指令

----- 查看容器状态
# runc state mybusybox

----- 容器内运行进程
# runc ps mybusybox

----- 在容器中执行命令
# runc exec mybusybox ls

----- 停止容器内的任务
# runc kill mybusybox

----- 暂停容器内的所有进程
# runc pause mybusybox

----- 恢复容器内进程的执行
# runc resume mybusybox

----- 获取容器的资源使用情况
# runc events mybusybox

熱遷移

就是將一個容器進行CheckPoint 操作,並取得一系列文件,然後再在其它機器上啟動。

推薦學習:《docker影片教學

以上是docker中runc是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn