1、进程隔离
在容器内部都只能看到自己内部的进程,那 Docker 是如何做到的呢?它其实是借助了Linux内核的Namespace技术来实现的
CLONE_NEWPID会让执行的程序内部重新编号PID,也就是从1号进程开始
CLONE_NEWNS 会克隆新的挂载环境出来,通过在子进程内部重新挂载 proc文件夹,可以屏蔽父进程的进程信息。
在容器内部都只能看到自己内部的进程
这就是容器隔离进程的基本原理了,Docker主要就是借助 Linux 内核技术Namespace来做到隔离的,其实包括文件的隔离,资源的隔离都是在新的命名空间下通过mount挂载的方式来隔离的。
Docker 技术 完全是依赖 Linux 内核特性 Namespace 和Cgroup 技术来实现的,本质来说:你运行在容器的应用在宿主机来说还是一个普通的进程,还是直接由宿主机来调度的,相对来说,性能的损耗 就很少,这也是 Docker 技术的重要优势。
Docker容器是共用宿主机 *** 作系统的,docker image里没有内核,只有shell。
/proc/[pid]/ns 目录下包含进程所属的 namespace 信息,使用以下命令可查看当前进程所属的 namespace 信息:
$ ll /proc/$$/ns
LXC是Linux Containers的缩写,是linux内核自带的容器化工具,用于进程隔离,namespace隔离,文件系统隔离。提供一种轻量的虚拟化解决方案。本文的 *** 作基于的Ubuntu系统。
Ubuntu下直接安装
安装完成后查看配置情况
启动LXC container
配置桥接网络
TODO
查看一下当前可用的模板
利用可用的模板创建一个centos的容器
命令中
创建完成后,利用工具lxc-ls可以查看当前建立的container
新建立的container的文件系统保存在目录 /var/lib/lxc/<container>/rootfs 下面,同时还有一个配置文件config
从一个已经创建好的container克隆出一个新的来
查看克隆好的新的lxc container
修改config文件,通过添加一行配置修改cpu分配,例如分配了CPU 0给container
首先在container内部创建一个文件夹,比如说 /mnt/share
然后主机上也创建一个文件夹,比如说'/tmp/share'
这个时候主机上保存container文件系统的目录下面也会产生 /mnt/share 这个目录,找到这个目录的绝对路径
修改container的配置文件config, 添加一行
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)