笔记:Docker 核心技术与实现原理
转载文章笔记,Docker 核心技术主要从以下几个方面实现:
- 进程命名空间,通过进程命名空间,将 docker 进程和 宿主进程进行隔离
- 网络,docker 网络模式使用桥接的方式进行
我的理解是,docker 层做了一个 路由器,所有的容器进程通过该路由器网关去连接访问外部网络
- 文件隔离,通过加载虚拟挂载点,重设 root 目录等等,将文件系统进行隔离
- 物理资源的隔离,通过 CGroups(Control Groups),限制容器在 CPU,内存,磁盘IO、网络上的使用率,以此来隔离容器间的资源分配。
- Docker 镜像的概念:Dockerfile 中的每条命令会形成一个 diff 层,每个 diff 层都是只读的,只有最上面的层是可写的。这个操作通过 UnionFS 实现。通过 AUFS(Advanced UnionFS),可以将未修改的镜像层进行联合挂载,从而提高读写效率。
References
- Chapter 4. Docker Fundamentals · Using Docker by Adrian Mount
- TECHNIQUES BEHIND DOCKER
- Docker overview
- Unifying filesystems with union mounts
- DOCKER 基础技术:AUFS
- RESOURCE MANAGEMENT GUIDE
- Kernel Korner - Unionfs: Bringing Filesystems Together
- Union file systems: Implementations, part I
- IMPROVING DOCKER WITH UNIKERNELS: INTRODUCING HYPERKIT, VPNKIT AND DATAKIT
- Separation Anxiety: A Tutorial for Isolating Your System with Linux Namespaces
- 理解 chroot
- Linux Init Process / PC Boot Procedure
- Docker 网络详解及 pipework 源码解读与实践
- Understand container communication
- Docker Bridge Network Driver Architecture
- Linux Firewall Tutorial: IPTables Tables, Chains, Rules Fundamentals
- Traversing of tables and chains
- Docker 网络部分执行流分析(Libnetwork 源码解读)
- Libnetwork Design
- 剖析 Docker 文件系统:Aufs与Devicemapper
- Linux - understanding the mount namespace & clone CLONE_NEWNS flag
- Docker 背后的内核知识 —— Namespace 资源隔离
- Infrastructure for container projects
- Spec · libcontainer
- DOCKER 基础技术:LINUX NAMESPACE(上)
- DOCKER 基础技术:LINUX CGROUP
- 《自己动手写Docker》书摘之三: Linux UnionFS
- Introduction to Docker
- Understand images, containers, and storage drivers
- Use the AUFS storage driver
Comments
Leave a comment