1. 程式人生 > 實用技巧 >kata-agent + libcontainer

kata-agent + libcontainer

root@ubuntu:/mnt/kata# ls
bin  boot  dev  etc  home  lib  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@ubuntu:/mnt/kata# find . -name libcontainer
root@ubuntu:/mnt/kata# find . -name libcontainer*
root@ubuntu:/mnt/kata# find . -name kata-agent
./usr/bin/kata-agent
root@ubuntu:
/mnt/kata# nm -C ./usr/bin/kata-agent | grep libcontainer 00000000013290c0 b github.com/kata-containers/agent/vendor/github.com/opencontainers/runc/libcontainer/apparmor.ErrApparmorNotEnabled 0000000000911f90 t github.com/kata-containers/agent/vendor/github.com/opencontainers/runc/libcontainer/apparmor.init 0000000001349509 b github.com/kata-containers/agent/vendor/github.com/opencontainers/runc/libcontainer/apparmor.initdone. 00000000009153a0 t github.com
/kata-containers/agent/vendor/github.com/opencontainers/runc/libcontainer.awaitFifoOpen 0000000000933070 t github.com/kata-containers/agent/vendor/github.com/opencontainers/runc/libcontainer.awaitFifoOpen.func1 000000000092e6e0 t github.com/kata-containers/agent/vendor/github.com/opencontainers/runc/libcontainer.bindMountDeviceNode 0000000000927260 t github.com/kata-containers/agent/vendor/github.com/opencontainers/runc/libcontainer.(*Boolmsg).Len 0000000000926fc0 t github.com
/kata-containers/agent/vendor/github.com/opencontainers/runc/libcontainer.(*Boolmsg).Serialize 0000000000926fa0 t github.com/kata-containers/agent/vendor/github.com/opencontainers/runc/libcontainer.(*Bytemsg).Len 0000000000926d30 t github.com/kata-containers/agent/vendor/github.com/opencontainers/runc/libcontainer.(*Bytemsg).Serialize 0000000001327fe8 b github.com/kata-containers/agent/vendor/github.com/opencontainers/runc/libcontainer.capabilityMap 0000000000922940 t github.com/kata-containers/agent/vendor/github.com/opencontainers/runc/libcontainer.Cgroupfs 00000000009228c0 t github.com/kata-containers/agent/vendor/github.com/opencontainers/runc/libcontainer.cgroupfs2 0000000000933140 t github.com/kata-containers/agent/vendor/github.com/opencontainers/runc/libcontainer.cgroupfs2.func1 00000000009331d0 t github.com/kata-containers/agent/vendor/github.com/opencontainers/runc/libcontainer.Cgroupfs.func1

runC 實現

runC可以啟動並管理符合OCI標準的容器。簡單地說,runC需要利用OCI bundle建立一個獨立的執行環境,並執行指定的程式。在Linux平臺上,這個環境就是指各種型別的Namespace以及Capability等等配置

程式碼結構

runC由Go語言實現,當前(2018.12)最新版本是v1.0.0-rc6,程式碼的結構可分為兩大塊,一是根目錄下的go檔案,對應各個runC命令,二是負責建立/啟動/管理容器的libcontainer,可以說runC的本質都在libcontainer