中国领先的IT技术网站
|
|

1.3.3 容器的创建

《Docker从入门到实战》本书从Docker的相关概念与基础知识讲起,结合实际应用,通过不同开发环境的实战例子,详细介绍了Docker的基础知识与进阶实战的相关内容,以引领读者快速入门并提高。本节为大家介绍容器的创建。

作者:黄靖钧来源:机械工业出版社|2017-10-17 18:10

CTO训练营 | 12月3-5日,深圳,是时候成为优秀的技术管理者了


1.3.3  容器的创建

前面只是非常简单地介绍了namespace和Cgroups两个概念。实际上各个namespace的具体介绍与各个Cgroups子系统的介绍都没有深入讲解到,但通过前面两节的学习,相信读者已经大致有了容器创建过程的雏形。

(1)系统调用clone()创建新进程,拥有自己的namespace。

该进程拥有自己的pid、mount、user、net、ipc和uts namespace。

  1. pid =clone(fun,stack,flags,clone_arg); 

(2)将pid写入Cgroup子系统这样就受到Cgroups子系统控制。

  1. # echo$pid >/sys/fs/cgroup/cpu/tasks  
  2. # echo$pid >/sys/fs/cgroup/cpuset/tasks  
  3. # echo$pid >/sys/fs/cgroup/bikio/tasks  
  4. # echo$pid >/sys/fs/cgroup/memory/tasks  
  5. # echo$pid >/sys/fs/cgroup/devices/tasks  
  6. # echo$pid >/sys/fs/cgroup/feezer/tasks 

(3)通过pivot_root系统调用,使进程进入一个新的rootfs,之后通过exec()系统调用,在新的namespace、Cgroups、rootfs中执行/bin/bash。

  1. fun(){   
  2.     pivot_root("path_of_rootfs/",path);  
  3.     exec("/bin/bash");  

通过上面的操作,成功地在一个容器中运行了/bin/bash。

喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢
24H热文
一周话题
本月最赞

读 书 +更多

Windows用户态程序高效排错

本书是一本介绍Windows系统上的用户态程序排错方法和技巧的书。本书分为4个章节,先介绍最重要的、通用的思考方法,以便制定排错步骤;再介...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊
× Phthon,最神奇好玩的编程语言