变更根目录:chroot 入门教程chroot 是1979年Unix引入的文件系统隔离机制,通过修改内核中进程根目录指针实现隔离。现代容器运行时(containerd、CRI-O)已不再使用chroot,改用Mount Namespaces和pivot_root。教程演示了用crane导出Alpine根文件系统并进入chroot环境,同时指出chroot无法隔离PID、网络栈和内存,root用户仍可逃逸。 评论点赞收藏4 天前
Linux线程与并发:从内存布局到调度原理Linux内核把线程实现为轻量级进程(LWP),通过clone系统调用创建,共享父进程的虚拟地址空间但拥有独立的执行栈和寄存器。每个线程有唯一的内核TID(gettid),而同属一个进程的所有线程共享同一个TGID(getpid返回的值)。并发不等于并行——单核CPU上线程是快速切换执行的,真正同时执行需要多核。线程每创建约需2-8MB栈内存,万级并发时上下文切换开销会显著超过实际工作。 评论点赞收藏10 天前
编写一个不包含 main() 函数的合法 C 程序通过完整拆解 GCC 编译链接流程,揭示 main 只是 C 运行库约定的入口,内核实际跳转的是 _start。教程演示了使用 -nostartfiles 跳过启动文件,手写汇编 _start 并直接调用 sys_write 和 sys_exit 系统调用,成功生成不依赖 libc 且不含 main 函数的可执行 ELF 文件。 评论点赞收藏21 天前
从零构建容器桥接网络:深入解析容器网络原理从零实现单主机容器网络,深入解析 Network Namespace、Veth Pair、Bridge 和 NAT 的工作原理。文章通过实际命令演示了如何隔离网络环境、连接容器与宿主机,并解决了多容器路由冲突问题。适合希望彻底理解 Docker 网络底层机制、摆脱黑盒操作的工程师阅读。 评论点赞收藏36 天前
eBPF 与 Wasm 结合:告别样板代码的工程实践文章以 Inspektor Gadget 为例,介绍如何将 eBPF 程序与 Wasm 模块打包成 OCI 镜像。这种方式让开发者只需关注内核事件捕获和数据处理的逻辑,无需重复编写加载、挂载和清理等样板代码。 通过实际演示,展示了如何运行 gadget 并查看其内部结构。这种架构简化了 eBPF 开发流程,提高了代码的可复用性和便携性,是云原生安全与可观测性领域的一个实用工程实践。 评论点赞收藏58 天前
服务器工作原理:TCP Socket动手入门指南本文通过Python代码从零构建一个简单的TCP服务器和客户端,深入讲解Socket、TCP协议、数据包分片与重组、连接建立及端口机制。 文章不仅解释了底层网络原理,还详细剖析了操作系统如何处理文件描述符、监听队列(backlog)以及accept调用的阻塞行为,适合后端工程师理解网络编程基础。 评论点赞收藏76 天前
从局域网到VXLAN:非网络工程师的网络基础本文详细讲解了从局域网(LAN)到虚拟扩展局域网(VXLAN)的网络基础概念。涵盖了物理段、冲突域、广播域、VLAN以及IP包在不同层级间的传输机制。 文章重点解释了L2与L3段的边界关系,以及VXLAN如何通过封装UDP在三层网络上构建虚拟二层网络,突破了传统VLAN的数量限制。 评论点赞收藏79 天前
容器不只是 Linux 进程:从 OCI 规范看虚拟机的容器化文章基于 OCI 运行时规范,澄清了容器不仅仅是 Linux 进程,虚拟机也可以被视为标准容器。 分析了 Linux 容器与 VM 容器的区别,指出随着对安全性要求的提高,Kata Containers 等项目正在兴起。 评论点赞收藏100 天前