Docker是如何实现隔离的

Docker是如何实现隔离的,第1张

Docker是如何实现隔离

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, 添加一行


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7247631.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-03
下一篇 2023-04-03

发表评论

登录后才能评论

评论列表(0条)

保存