简容器

下面用 C 语言演示如何不依赖 Docker,手动组合所有命名空间来创建一个容器:

#define _GNU_SOURCE
#include 
#include 
#include 
#include 
#include 

#define STACK_SIZE (1024 * 1024)
static char child_stack[STACK_SIZE];

int child_func(void *arg) {
    // 1. 设置独立主机名
    sethostname("mycontainer", 11);

    // 2. 挂载新的 /proc
    mount("proc", "/proc", "proc", 0, NULL);
    mount("sysfs", "/sys", "sysfs", 0, NULL);

    // 3. 切换根文件系统
    // pivot_root(new_root, put_old) - 需要预先准备好根目录

    // 4. 打印容器内部视角
    printf("Container PID: %d\n", getpid());
    printf("Container hostname: ");
    fflush(stdout);
    system("hostname");

    // 5. 执行 shell
    char *args[] = {"/bi                        

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部