antony@notes:~/container$ cat "runc.md"
runc
runc
- c代表container
bigred@alp:~$ runc spec
-rw-r--r-- 1 bigred bigred 2.6K Oct 4 10:47 config.jsonconfig.json 是一個設定檔
- 不管是
runc還是crun都絕對要兩個東西用來制定container的標準有兩個 - 一個設定檔(config.json)
- 一個目錄區(rootfs)
/ # cat /proc/meminfo | head -n 3
MemTotal: 2010804 kB
MemFree: 663208 kB
MemAvailable: 1901940 kB
/proc的目錄內容是由linux kernel維護的,他就是把process所run的資訊寫到這個目錄
Docker透過使用go語言照著OCI的標準Container製作流程創造出RunC
開始做出來的container沒有網路卡可以使用
進到Container裡面是root使用者,但是root權限有被限制不是最高權限
container無法刪除kernel裡面的任何東西
Daemon
- linux一啟動後很多背景程式在執行那些背景程式統稱Daemon
- container”d”: d - daemon(小惡魔LOGO)
- 在linux最後加個"&“把程式推到背景去做, 我們從pstree看到的ssh"d” syslog"d" 都是daemon
Containerd
“d” 就是daemon
containerd事實上是daemon的名字,他就是一個webserver(網站伺服器),這個網站伺服器用go語言寫的
前端命令ctr透過http對containerd下命令(命令有三個)
◆Create (產生container )
→上網到docker的光碟片中心(Docker HUB)抓裡面放的docker image(光碟片)
→產生目錄檔root_file_system(簡稱rootfs) & 設定檔config.json
→執行runc→生成一個container
◆ Delete 刪除container
◆ List 列出已存在的cotainer下載 Container Image
$ sudo ctr image pull quay.io/cloudwalker/busybox:latest
- quay.io 是 rathat的光片中心
- cloudwalker 是帳號or機構or類別
- busybox 是光碟片名稱
- tags (通常是版本)