容器技术研究记录

it2022-05-05  184

给自己掌握的容器技术进行一次梳理

容器底层核心技术与实现原理

Docker 核心技术与实现原理

Namespaces 说明 命名空间(namespaces)是 Linux 为我们提供的用于分离进程树、网络接口、挂载点以及进程间通信等资源的方法。在日常使用 Linux 或者 macOS 时,我们并没有运行多个完全分离的服务器的需要,但是如果我们在服务器上启动了多个服务,这些服务其实会相互影响的,每一个服务都能看到其他服务的进程,也可以访问宿主机器上的任意文件,这是很多时候我们都不愿意看到的,我们更希望运行在同一台机器上的不同服务能做到完全隔离,就像运行在多台不同的机器上一样。 隔离资源列表 名称宏定义隔离资源MountCLONE_NEWNSMount points (since Linux 2.4.19)UTSCLONE_NEWUTSHostname and NIS domain name (since Linux 2.6.19)IPCCLONE_NEWIPCSystem V IPC, POSIX message queues (since Linux 2.6.19)NetworkCLONE_NEWNETNetwork devices, stacks, ports, etc. (since Linux 2.6.24)PIDCLONE_NEWPIDProcess IDs (since Linux 2.6.24)UserCLONE_NEWUSERUser and group IDs (started in Linux 2.6.23 and completed in Linux 3.8)CgroupCLONE_NEWCGROUPCgroup root directory (since Linux 4.6) 源码分析 参考 struct nsproxy { atomic_t count; struct uts_namespace *uts_ns; // 包括user_namespace struct ipc_namespace *ipc_ns; struct mnt_namespace *mnt_ns; struct pid_namespace *pid_ns_for_children; struct net *net_ns; struct cgroup_namespace *cgroup_ns; }; linux 演示

最新回复(0)