# 参考一个overlayfs的例子
# https://www.cnblogs.com/arnoldlu/p/13055501.html
mount -t overlay -o lowerdir=lower,upperdir=upper,workdir=work overlay merge
# 组合命令:
# 在linux目录运行成功,直接挂载windows目录有问题,文件写入失败
mkdir image-layer4 image-layer3 image-layer2 image-layer1 container-layer work mnt
mount -t overlay -o lowerdir=./image-layer4:./image-layer3:./image-layer2:./image-layer1,upperdir=./container-layer,workdir=./work overlay ./mnt
从 container 到 pod (morven.life)
直接使用命令行创建namespace,在另外namespace运行程序
unshare --fork --pid --mount-proc bash
# 查看当前的namespace
root@xyyweb-pc:/mnt/c/Users/ZJBR# lsns
NS TYPE NPROCS PID USER COMMAND
4026531835 cgroup 2 1 root bash
4026531837 user 2 1 root bash
4026531992 net 2 1 root bash
4026532233 ipc 2 1 root bash
4026532243 uts 2 1 root bash
4026532347 mnt 2 1 root bash
4026532348 pid 2 1 root bash
# 直接在某个cgroup下运行
cgcreate -a morven -g memory:mycgrp
echo 1000 > /sys/fs/cgroup/memory/mycgrp/memory.limit_in_bytes
cgexec -g memory:mycgrp java -version
docker可以做到容器间共享namespace
root@pddweb-pc:~/ns-share-demo# cat nginx.conf
error_log stderr;
events { worker_connections 1024; }
http {
access_log /dev/stdout combined;
server {
listen 81 default_server;
error_log stderr;
server_name example.com www.example.com;
location / {
proxy_pass http://127.0.0.1:80;
}
}
}
root@pddweb-pc:~/ns-share-demo# docker run -d --name nginx -v $(pwd)/nginx.conf:/etc/nginx/nginx.conf --ipc=shareable -p 8080:81 nginx
9e2f9a2d32195fbac557371674bc967804771dc283dca630e97565394b2c3bb4
root@pddweb-pc:~/ns-share-demo# docker run -d --name nginx-backend --net=container:nginx --ipc=container:nginx --pid=container:nginx nginx
1c9af683dbf956ae600f5bd9d644e49f5237bcdf400ed7e01394c859ac0d35d9
root@pddweb-pc:~/ns-share-demo# curl http://localhost:8080/
使用pod的pause共享命名空间
root@pddweb-pc:~/ns-share-demo# docker run -d --name pause --ipc=shareable -p 8080:80 ran
cher/mirrored-pause:3.1
5d75e1d648c02686b02ce127b8065ae5e6337594c696774d252e1515475e80d7
root@pddweb-pc:~/ns-share-demo# docker run -d --name nginx --net=container:pause --ipc=container:pause --pid=container:pause nginx
a4e68b82209a197f675fc30a2b1677f0ca37c8c02eaaf2bca1c27383cd72f4c5
root@pddweb-pc:~/ns-share-demo# curl http://localhost:8080/
官方文档
Control Groups version 1 — The Linux Kernel documentation
Control Group v2 — The Linux Kernel documentation
Linux的cgroup功能(二):资源限制cgroup v1和cgroup v2的详细介绍By李佶澳 (lijiaocn.com)