Docker背后的内核知识:命名空间资源隔离---亲测

简介: 参考URL: https://linux.cn/article-5057-1.html 实现代码(网络和用户空间只是看懂了) 实际上,Linux内核实现namespace的主要目的就是为了实现轻量级虚拟化(容器)服务。

参考URL:

https://linux.cn/article-5057-1.html

实现代码(网络和用户空间只是看懂了)

实际上,Linux内核实现namespace的主要目的就是为了实现轻量级虚拟化(容器)服务。在同一个namespace下的进程可以感知彼此的变化,而对外界的进程一无所知。这样就可以让容器中的进程产生错觉,仿佛自己置身于一个独立的系统环境中,以此达到独立和隔离的目的。

需要说明的是,本文所讨论的namespace实现针对的均是Linux内核3.8及其以后的版本。

Namespace

系统调用参数

隔离内容

UTS

CLONE_NEWUTS

主机名与域名

IPC

CLONE_NEWIPC

信号量、消息队列和共享内存

PID

CLONE_NEWPID

进程编号

Network

CLONE_NEWNET

网络设备、网络栈、端口等等

Mount

CLONE_NEWNS

挂载点(文件系统)

User

CLONE_NEWUSER

用户和用户组

#define _GNU_SOURCE
#include <sys/types.h>
#include <sys/wait.h>
#include <stdio.h>
#include <sched.h>
#include <signal.h>
#include <unistd.h>

#define STACK_SIZE (1024 * 1024)

static char child_stack[STACK_SIZE];
char* const child_args[] = {"/bin/bash", NULL};

int child_main(void* args) {
    printf("run in child process!\n");
    sethostname("Changens", 12);
    execv(child_args[0], child_args);
    return 1;
}

int main() {
    printf("programe beginning....\n");
    int child_pid = clone(child_main, child_stack+STACK_SIZE, CLONE_NEWNS|CLONE_NEWPID|CLONE_NEWIPC|CLONE_NEWUTS|SIGCHLD, NULL);
    waitpid(child_pid, NULL, 0);
    printf("exited.\n");
    return 0;
}

 

目录
相关文章
|
7月前
|
Cloud Native Linux 虚拟化
【云原生】Docker容器资源限制(CPU/内存/磁盘)
【云原生】Docker容器资源限制(CPU/内存/磁盘)
893 0
|
2天前
|
存储 安全 数据中心
【Docker 专栏】Docker 容器与宿主机的资源隔离机制
【5月更文挑战第8天】Docker容器利用Namespace和Cgroups实现资源隔离,保证CPU、内存、网络和存储的独立,提升资源利用率和系统安全性。资源隔离有助于简化应用部署与管理,但也带来资源竞争、监控管理及安全挑战。理解并善用资源隔离机制能实现更高效、安全的容器运行。随着技术进步,Docker容器资源隔离将持续优化。
【Docker 专栏】Docker 容器与宿主机的资源隔离机制
|
2天前
|
运维 Linux Docker
Docker详解(十一)——Docker容器CPU资源限额实战Docker详解
Docker详解(十一)——Docker容器CPU资源限额实战
30 5
|
2天前
|
存储 运维 Linux
Docker详解(十)——Docker容器CPU资源限额配置
Docker详解(十)——Docker容器CPU资源限额配置
24 3
|
7月前
|
弹性计算 Kubernetes 调度
《Docker资源限制和调度策略:性能优化与资源管理,打造高效稳定的容器环境》
《Docker资源限制和调度策略:性能优化与资源管理,打造高效稳定的容器环境》
168 0
|
7月前
|
Go 虚拟化 云计算
Docker 基础知识解析:容器与传统虚拟化对比:资源利用、启动时间、隔离性和部署效率
Docker 基础知识解析:容器与传统虚拟化对比:资源利用、启动时间、隔离性和部署效率
203 0
|
2天前
|
jenkins 持续交付 数据安全/隐私保护
【Docker】安装Jenkins 亲测 傻瓜式安装
【Docker】安装Jenkins 亲测 傻瓜式安装
139 0
|
2天前
|
前端开发 Java 应用服务中间件
【Docker】部署若依项目——保姆级教程亲测
【Docker】部署若依项目——保姆级教程亲测
244 0
|
2天前
|
NoSQL Redis 数据安全/隐私保护
【Docker】安装Redis 通俗易懂 亲测没有任何问题 只需三步
【Docker】安装Redis 通俗易懂 亲测没有任何问题 只需三步
64 0
|
2天前
|
关系型数据库 MySQL 数据安全/隐私保护
【Docker】安装MySQL 通俗易懂 亲测没有任何问题
【Docker】安装MySQL 通俗易懂 亲测没有任何问题
159 0