docker build -t cgroups-namespaces-lab .
docker run -it --rm --name lab_container --privileged cgroups-namespaces-lab
# inside container
## Check cgroups:
cat /proc/self/cgroup
# listns
ls -l /proc/$$/ns
unshare --pid --fork --mount-proc bash
inside namespace, check process tree
ps aux
ip netns add testns
ip netns exec testns bash
## list net interface in net namespace
ip link
unshare --mount bash
mount -t tmpfs tmpfs /mnt
df -h /mnt
Create a new cgroup for limiting CPU usage.
mkdir /sys/fs/cgroup/cpu/my_cgroup
echo 50000 > /sys/fs/cgroup/cpu/my_cgroup/cpu.cfs_quota_us
echo $$ > /sys/fs/cgroup/cpu/my_cgroup/tasks
## Check CPU usage limits:
cat /sys/fs/cgroup/cpu/my_cgroup/cpu.cfs_quota_us
Create a new cgroup for limiting memory usage.
mkdir /sys/fs/cgroup/memory/my_cgroup
echo 100M > /sys/fs/cgroup/memory/my_cgroup/memory.limit_in_bytes
echo $$ > /sys/fs/cgroup/memory/my_cgroup/tasks
## check mem usage limits:
cat /sys/fs/cgroup/memory/my_cgroup/memory.limit_in_bytes
unshare --pid --net --mount --uts --ipc bash
mkdir /sys/fs/cgroup/cpu/my_combined_cgroup
echo 50000 > /sys/fs/cgroup/cpu/my_combined_cgroup/cpu.cfs_quota_us
echo $$ > /sys/fs/cgroup/cpu/my_combined_cgroup/tasks
ls -l /proc/$$/ns