Docker進階與實踐之二:Namespace
一:簡介
容器的核心技術是Cgroup+Namespace. Linux容器的最小組成可以由以下公式來表示: 容器=cgroup+namespace+rootfs+容器引擎。 Cgroup:資源控制,Namespace:訪問隔離,rootfs:檔案系統隔離,容器引擎:生命週期控制。
二:Namespace思維導圖
三:總結
Namespace和Cgroup的使用是很靈活的,同時又有不少需要注意的地方,因此直接操作Namespace和Cgroup並不是很容易。正是因為這些原因,Docker透過Libcontainer來處理這些底層的事情。這樣一來,Docker只需要簡單地呼叫Libcontainer的API,就能將完整的容器搭建起來。
四:容器的建立原理
1.透過clone系統呼叫,並傳入各個namespace對應的clone flag,建立了一個新的子程式,該程式擁有自己的Namespace.
pid = clone(fun,task,flags,clone_arg); (flags:CLONE_NEWPID|CLONE_NEWNS| CLINE_NEWUSER|CLONE_NEWNET| CLONE_NEWIPC|CLONE_NEWUTS: ...)
2.將第一步中產生的pid寫入各個cgroup子系統,這樣改程式就可以受到相應Cgroup子系統的控制
echo $pid>/sys/fs/cgroup/cpu/tasks echo $pid>/sys/fs/cgroup/cpuset/tasks echo $pid>/sys/fs/cgroup/blkio/tasks echo $pid>/sys/fs/cgroup/memory/tasks echo $pid>/sys/fs/cgroup/devices/tasks echo $pid>/sys/fs/cgroup/freezer/tasks
3.該fun函式由上面生成的新程式執行,在fun函式中透過pivot_root系統呼叫,使程式進入一個新的rootfs,之後透過exec系統呼叫,在新的namespace,cgroup,rootfs中執行"/bin/bash"程式
fun() { ...pivot_root("path_of_rootfs/",path); ...exec("/bin/bash"); ... }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28624388/viewspace-2643987/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Docker進階與實踐之三:Docker映象Docker
- Docker進階與實踐之一:CgroupDocker
- Docker進階與實踐之四:Docker映象倉庫Docker
- Docker實踐(4)—network namespace與veth pairDockernamespaceAI
- Docker進階與實踐之六:容器卷管理Docker
- Docker進階與實踐之七:LibcontainerDockerAI
- Docker進階與實踐之五:Docker網路LibnetworkDocker
- Typescript 進階與實踐(一)TypeScript
- Docker 入門與實踐Docker
- Docker network namespaceDockernamespace
- Nginx--進階篇(實踐)Nginx
- Docker多階段構建最佳實踐Docker
- Docker CheatSheet | Docker 配置與實踐清單Docker
- React 進階二-元件最佳實踐React元件
- Docker:四、Docker進階 Windows Docker IIS 部署DockerWindows
- Docker進階使用1Docker
- Elm入門實踐(三)——進階篇
- 實踐:Docker容器與映象管理Docker
- Docker容器的原理與實踐 (下)Docker
- Docker 映象優化與最佳實踐Docker優化
- Docker知識進階與容器編排技術Docker
- Apache Flink 進階(三):Checkpoint 原理解析與應用實踐Apache
- Docker進階-快速擴容Docker
- 【狂神說】Docker(三) - 高階進階Docker
- Docker Swarm 進階:資料卷備份與恢復DockerSwarm
- Scala隱式轉換理論及進階實踐-Coding技術進階實戰
- 使用Docker進行Redis主從複製實踐DockerRedis
- docker映象體積優化方法與實踐Docker優化
- Jenkins與Docker的持續整合實踐JenkinsDocker
- Docker容器編排技術解析與實踐Docker
- Docker_06 容器-進階操作Docker
- 斌哥的 Docker 進階指南Docker
- kubernetes實踐之二十一:物件與元件簡介物件元件
- Serverless 架構演進與實踐Server架構
- ECS進階Day03:SLB負載均衡實踐負載
- Java進階篇:多執行緒併發實踐Java執行緒
- 斌哥的 Docker 進階指南—監控方案的實現Docker
- Docker入門實踐Docker