Docker使用的几个关键技术介绍

       docker采用Go语言编写,而且采用部分linux内核特征实现共功能。docker容器采用沙盒机制,相互之间隔离,不存在访问接口。

一、命名空间   namesapce

     docker引擎采用命名空间技术,为容器之间创建隔离层,为每一个容器定义一套不同的命名空间,通过命名空间访问容器每一部分,这就使得容器间相互隔离。docker引擎在linux上使用的命名空间有如下:

       pid:    进程隔离(PID:Process ID)

       net:    管理网络接口(NET:  Networking)

       ipc: 管理对内部进程的访问(IPC: InterProcess Communication)

      mnt:    管理文件系统挂载点(MNT:mount)

      uts:  隔离内核和版本标示符(UTS: Unix Timesharing System)

   因此,当我们采用访问进程命名空间方式,进入容器,需要带上上述的命名空间。

yum intall -y nsenter
nsenter --target 进程ID   --pid --ipc --mount --net --uts

获取容器ID可通过如下代码

docker inspect -f {{.State.Pid}} <contain_id | contain_name>

二、Control group 

   采用命名空间,能够将容器隔离,因此容器在使用设备(称为子系统)时,也是按照各容器独立使用,因此多个容器对设备的使用应是互斥的,具有抢占性质,所以需要统一的策略维护容器对子系统的使用。Control group (cgroup)限制应用程序使用指定的设备资源。docker engine可使用cgroup 使容器共享使用子系统资源,同时,也可约束或者限制容器使用特定资源,例如仅限制某个容器所占内存大小。

三、Union File Systems

  统一文件系统,又称UnionFS, 是docker  快速创建轻量 镜像层的文件系统。docker engine使用UnionFS为容器提供构建模块。同时docker engine也可使用UnionFS的变体btrfs, vfs, and DeviceMapper等。

四、容器格式

  docker 结合namespace, Conrol group, 和UnionFS, 封装成容器的格式,默认称为 libcontainer. 未来,不同格式的容器将被纳入doker中,例如 BSD Jails 和 Solaris Zones.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值