Docker
小凯Alex
这个作者很懒,什么都没留下…
展开
-
聊一聊Docker所使用到的Linux底层技术(Namespace,Cgroup与存储驱动和容器引擎)
Namespace首先要理解docker本质上是一个运行在宿主机上的一个进程,用于帮助进程隔离出自己单独的空间.Linux Namespace可以隔离一系列的系统资源,如进程ID,网络资源,用户ID一样Linux现在实现了六种NamespaceUTS Namespace主要用来进行hostname的隔离IPC Namespace用来进行IPC和message queues...原创 2019-09-28 00:27:28 · 2698 阅读 · 1 评论 -
Docker run实际上发生了什么? 用Go模拟这个过程
Linux ProcLinux下的/proc文件系统是由内核提供的.它不是一个真正的文件系统,只包含了系统运行时候的消息.(如系统内存/mount设备信息/硬件配置)它只存在于内存中,不占用外存空间.本质是以文件系统的方式,为访问内核数据的操作提供接口main函数main.go启动的主函数现在定义了两个命令initCommand与runCommandpackage main...原创 2019-09-28 13:51:38 · 308 阅读 · 0 评论 -
Docker是怎么利用cgroup技术来实现资源限制的?
Cgroupcgroup和namespace类似,也是把进程进行分组,但是目的和namespace不一样,namespace是为了隔离进程组之间的资源.而cgroup是为了对一组进程进行统一的资源监控与限制.cgroup技术把系统中所有的进程组织成一棵棵独立的树,每一棵树都有系统所有的进程树的每个节点都是一个进程组.而每一棵树又于一个或者多个subsystem关联,树的作用是把进程分组,而s...原创 2019-09-28 18:56:52 · 382 阅读 · 0 评论 -
自己动手写Docker之增加管道功能与环境变量识别
通道通信在Linux上创建两个进程的时候,进程之间的通信一般会使用通道的机制.所谓管道,就是一个链接两个进程的通道.一般管道有两种无名通道存在于有亲缘关系的进程之间有名通道存在于文件系统的管道.(FIFO管道)本质上来说,管道也是文件的一种,不过与文件通信区别在于管道有一个缓冲区,管道写满之后,写进程会阻塞.当管道为空的时候,读进程也会阻塞.1.用户启动Runfunc...原创 2019-10-01 21:10:38 · 517 阅读 · 0 评论 -
动手自己写Docker之实现容器文件系统与镜像的隔离.
pivotRoot这是一个系统调用,主要功能是改变当前的root文件系统,是吧整个系统切换到一个新的root中,移除对之前root的依赖具体原理是把当前进程root文件系统移动到old文件夹中,使new_root成为新的root文件系统.func pivotRoot(root string) error { /** 为了使当前root的老 root 和新 root 不在同一个文件...原创 2019-10-01 23:48:00 · 586 阅读 · 0 评论
分享