Docker 工作原理
2023-09-18 23:21:45 26 举报
Docker 核心技术:Namespace + Cgroup + chroot + Layer
作者其他创作
大纲/内容
只读层(ro+wh)
upperdir 读写层
挂载,实现容器资源可见性
宿主机 Linux Namespace 命名空间隔离
/bin /dev /etc /home /lib /mnt /opt /var /tmp ...
在容器进程启动之前将宿主机的 /test 挂载到容器根目录
FROM openjdk:11-jdk-slim
/var/lib/docker/overlay2/6e3be5d2ecccae7cc...
10.2.0.1
eden-demo-cola:latest
rootfs联合挂载
限制内存
devices
/var/lib/docker/overlay2/l/ESSLZXVZL6HAP...
进程信息 /proc
eth0
layer镜像分层
merge 联合挂载点
宿主机进程ID:29123(实际)容器进程ID:1(当前视图)
clone() 调用
lowerdir 只读层
chroot 命令
/var/lib/docker/overlay2/6e3be5d2ecc...-init/diff
veth2
限制IO
PID Namespace进程隔离
/etc/hosts /etc/hostname/etc/resolv.conf
...软链接
blkio
可读写层(rw)
veth1
Host Namespace网络隔离
/var/lib/docker/overlay2/l/AVD5VG4SCK7R...
读写层+只读层联合挂载同一个目录视图
/var/lib/docker/overlay2/l/V3NE3RCPRAK3...
工作空间 /app
限制CPU
...
/var/lib/lxcfs/proc
Mount Namespace挂载点隔离
/var/lib/docker/overlay2/l/4OT7ZYSMYD6F...
cpu
/var/lib/docker/overlay2/6e3be5d2c.../merged
容器 eden-demo-layer:a4d38336
Dockefile描述文件
宿主机目录 /test
Init层(ro+wh)
172.16.0.3
解决容器 Top 获取到宿主机资源问题
宿主机 rootfs 联合挂载 /var/lib/docker/image/overlay2
限制设备
工作空间 /app
chroot文件隔离
\"java -jar app.jar\"
Copy On Write & /app
Namespace视图隔离
容器 eden-demo-cola:ad3ds4ss
docker0172.16.0.1
核心技术
镜像 eden-demo-cola:latest
Cgroup资源限制
宿主机 Linux Cgroups 进程组资源限制,以 /sys/fs/cgroup 目录暴露接口
memory
ENTRYPOINT java -jar app.jar
172.16.0.2
0 条评论
回复 删除
下一页