Skip to content

antony@notes:~/container$ cat "runc.md"

runc

2021-10-24· container ·Container

runc

  • c代表container
bigred@alp:~$ runc spec
-rw-r--r-- 1 bigred bigred 2.6K Oct  4 10:47 config.json

config.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 (通常是版本)
tags: Container