上一篇文章中,讲解了如何通过Go语言实现对Docker Cgroup的资源限制
具体文章可见《Docker就应该这么学-07》
有需要的小伙伴可以回顾一下。
接下来本文会详细介绍一下Docker 管道及环境变量识别
管道及环境变量识别
获取代码
git clone https://gitee.com/mjreams/docker.git
当在Linux上创建两个进程时,进程之间的通信一般就会使用管道的机制。所谓管道,就是一个连接两个进程的通道,它是Linux支持IPC的其中一种方式。一般来说,管道都是半双工的,一端进行写操作,另外一端进行读操作。
常用的管道分为两种类型。一种类型是无名管道,它一般用于具有亲缘关系的进程之间;另外一种是有名管道,或者叫FIFO管道,它是一种存在于文件系统的管道,可以被两个没有任何亲缘关系的进程进行访问。有名管道一般可以通过mkfifo()函数来创建。
从本质上来说,管道也是文件的一种,但是它和文件通信的区别在于,管道有一个固定大小的缓冲区,大小一般是4KB。当管道被写满时,写进程就会被阻塞,直到有读进程把管道的内容读出来。同样地,当读进程从管道内拿数据的时候,如果这时管道的内容是空的,那么读进程同样会被阻塞&