Skip to content

Commit 3571802

Browse files
author
Mercurio
committed
Improve docs in module3
1 parent 056b910 commit 3571802

File tree

8 files changed

+126
-69
lines changed

8 files changed

+126
-69
lines changed

module3/2.understand-docker.md

Lines changed: 32 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,42 @@
1-
21
# Understand Docker
3-
## overlay fs
4-
```
2+
3+
## OverlayFS
4+
5+
```shell
56
$ mkdir upper lower merged work
6-
$ echo "from lower" > lower/in_lower.txt
7+
$ echo "from lower" > lower/in_lower.txt
78
$ echo "from upper" > upper/in_upper.txt
8-
$ echo "from lower" > lower/in_both.txt
9-
$ echo "from upper" > upper/in_both.txt
9+
$ echo "from lower" > lower/in_both.txt
10+
$ echo "from upper" > upper/in_both.txt
1011
$ sudo mount -t overlay overlay -o lowerdir=`pwd`/lower,upperdir=`pwd`/upper,workdir=`pwd`/work `pwd`/merged
1112
$ cat merged/in_both.txt
1213
```
13-
```
14+
15+
```shell
1416
$ echo 'new file' > merged/new_file
15-
$ ls -l */new_file
16-
```
17+
$ ls -l */new_file
1718
```
19+
20+
```shell
1821
$ rm merged/in_both.txt
1922
$ ls -l upper/in_both.txt lower/in_both.txt merged/in_both.txt
2023
```
21-
```
24+
25+
```shell
2226
$ mount -t overlay overlay -o lowerdir:/dir1:/dir2:/dir3:...:/dir25,upperdir=...
2327
```
24-
## namespace
25-
```
28+
29+
## Namespace
30+
31+
```shell
2632
$ lsns -t net
2733
$ cd /proc/25452/ns/
2834
$ nsenter -t <pid> -n ip addr
2935
```
30-
## cgroup
31-
```
36+
37+
## cgroups
38+
39+
```shell
3240
$ cat /proc/25452/cgroup
3341
11:pids:/kubepods/besteffort/pod8d80a5f8-cb1e-4b28-ba54-393e6b363e20/a99d384f32fc7aeb8a06934e387ed9ea30992676257a61af37d705805f1dffb7
3442
10:freezer:/kubepods/besteffort/pod8d80a5f8-cb1e-4b28-ba54-393e6b363e20/a99d384f32fc7aeb8a06934e387ed9ea30992676257a61af37d705805f1dffb7
@@ -42,23 +50,26 @@ $ cat /proc/25452/cgroup
4250
2:net_cls,net_prio:/kubepods/besteffort/pod8d80a5f8-cb1e-4b28-ba54-393e6b363e20/a99d384f32fc7aeb8a06934e387ed9ea30992676257a61af37d705805f1dffb7
4351
1:name=systemd:/kubepods/besteffort/pod8d80a5f8-cb1e-4b28-ba54-393e6b363e20/a99d384f32fc7aeb8a06934e387ed9ea30992676257a61af37d705805f1dffb7
4452
```
45-
```
53+
54+
```shell
4655
$ docker ps
4756
```
48-
```
57+
58+
```shell
4959
$ docker inspect <containerid>| grep -i cgroup
5060
"CgroupParent": "kubepods-burstable-podfc9d9da9_7d7a_4970_b306_8ee27f121de1.slice",
5161
```
52-
```
62+
63+
```shell
5364
$ cd /sys/fs/cgroup/memory/kubepods.slice/kubepods-burstable.slice
5465
```
55-
```
66+
67+
```shell
5668
$ cd kubepods-burstable-podfc9d9da9_7d7a_4970_b306_8ee27f121de1.slice
5769
```
58-
```
70+
71+
```shell
5972
$ ls
6073
$ cat memory.limit_in_bytes
6174
1073741824
6275
```
63-
64-

module3/Reduce docker images size.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ docker.io/library/busybox latest 42b97d3c2ae9 13 days ago 1.46 MB
1313
gcr.io/distroless/static latest e0851a4aa136 51 years ago 3.06 MB
1414
```
1515

16-
- busybox
17-
- alpine
16+
- busybox
17+
- alpine
1818
- google/distroless
1919

2020
Example:
@@ -61,6 +61,7 @@ ADD https://example.com/big.tar.xz /usr/src/things/
6161
RUN tar -xJf /usr/src/things/big.tar.xz -C /usr/src/things
6262
RUN make -C /usr/src/things all
6363
```
64+
6465
instead of
6566

6667
```dockerfile
@@ -90,4 +91,3 @@ RUN apt-get update && apt-get install -y \
9091
https://github.com/docker-library/buildpack-deps/blob/master/Dockerfile.template
9192

9293
https://www.digitalocean.com/community/tutorials/how-to-optimize-docker-images-for-production
93-

module3/cgroup-cpu.MD

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,31 @@
11
### 在 cgroup cpu 子系统目录中创建目录结构
2-
```
2+
3+
```sh
34
cd /sys/fs/cgroup/cpu
45
mkdir cpudemo
56
cd cpudemo
67
```
8+
79
### 运行 busyloop
10+
811
### 执行 top 查看 CPU 使用情况,CPU 占用 200%
12+
913
### 通过 cgroup 限制 cpu
10-
```
14+
15+
```sh
1116
cd /sys/fs/cgroup/cpu/cpudemo
1217
```
18+
1319
### 把进程添加到 cgroup 进程配置组
14-
```
20+
21+
```sh
1522
echo ps -ef|grep busyloop|grep -v grep|awk '{print $2}' > cgroup.procs
1623
```
24+
1725
### 设置 cpuquota
18-
```
26+
27+
```sh
1928
echo 10000 > cpu.cfs_quota_us
2029
```
21-
### 执行 top 查看 CPU 使用情况,CPU 占用变为10%
2230

31+
### 执行 top 查看 CPU 使用情况,CPU 占用变为 10%

module3/cgroup-mem.MD

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,31 @@
11
### 在 cgroup memory 子系统目录中创建目录结构
2-
```
2+
3+
```sh
34
cd /sys/fs/cgroup/memory
45
mkdir memorydemo
56
cd memorydemo
67
```
7-
### 运行 malloc(在linux机器make build)
8+
9+
### 运行 malloc(在 linux 机器 make build)
10+
811
### 查看内存使用情况
9-
```
12+
13+
```sh
1014
watch 'ps -aux|grep malloc|grep -v grep'
1115
```
16+
1217
### 通过 cgroup 限制 memory
13-
### 把进程添加到cgroup进程配置组
14-
```
18+
19+
### 把进程添加到 cgroup 进程配置组
20+
21+
```sh
1522
echo ps -ef|grep malloc |grep -v grep|awk '{print $2}' > cgroup.procs
1623
```
24+
1725
### 设置 memory.limit_in_bytes
18-
```
26+
27+
```sh
1928
echo 104960000 > memory.limit_in_bytes
2029
```
30+
2131
### 等待进程被 oom kill

module3/namespace.MD

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,27 @@
11
### 在新 network namespace 执行 sleep 指令:
2-
```
2+
3+
```sh
34
unshare -fn sleep 60
45
```
6+
57
### 查看进程信息
6-
```
8+
9+
```sh
710
ps -ef|grep sleep
811
root 32882 4935 0 10:00 pts/0 00:00:00 unshare -fn sleep 60
912
root 32883 32882 0 10:00 pts/0 00:00:00 sleep 60
1013
```
14+
1115
### 查看网络 Namespace
12-
```
16+
17+
```sh
1318
lsns -t net
1419
4026532508 net 2 32882 root unassigned unshare
1520
```
21+
1622
### 进入改进程所在 Namespace 查看网络配置,与主机不一致
17-
```
23+
24+
```sh
1825
nsenter -t 32882 -n ip a
1926
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1000
2027
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

module3/overlay-fs.MD

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ $ echo "from upper" > upper/in_upper.txt
1010
$ echo "from lower" > lower/in_both.txt
1111
$ echo "from upper" > upper/in_both.txt
1212
```
13+
1314
### Check it
15+
1416
```log
1517
root@k8s-master:~/testlab# tree .
1618
.
@@ -33,6 +35,7 @@ $ sudo mount -t overlay overlay -o lowerdir=`pwd`/lower,upperdir=`pwd`/upper,wor
3335
```
3436

3537
### Check the merged file
38+
3639
```shell
3740
$ cat merged/in_both.txt
3841

module3/readme.md

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,13 @@
22

33
### Core
44

5-
- [namespace](namespace.MD)
6-
7-
- cgroup
8-
- [cpu](cgroup-cpu.MD)
9-
- [memory](cgroup-mem.MD)
10-
- [filesystem](overlay-fs.MD)
11-
- [network](setup-network.md)
12-
13-
- [understand docker](2.understand-docker.md)
5+
- [Namespace](namespace.MD)
6+
- cgroups
7+
- [CPU](cgroup-cpu.MD)
8+
- [Memory](cgroup-mem.MD)
9+
- [Filesystem](overlay-fs.MD)
10+
- [Network](setup-network.md)
11+
- [Understand docker](2.understand-docker.md)
1412

1513
### Some Tips
1614

module3/setup-network.md

Lines changed: 40 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,44 @@
1-
### create network ns
2-
```
1+
### Create network ns
2+
3+
```sh
34
mkdir -p /var/run/netns
45
find -L /var/run/netns -type l -delete
56
```
6-
### start nginx docker with non network mode
7-
```
7+
8+
### Start nginx docker with non network mode
9+
10+
```sh
811
docker run --network=none -d nginx
912
```
10-
### check corresponding pid
11-
```
13+
14+
### Check corresponding pid
15+
16+
```sh
1217
docker ps|grep nginx
1318
docker inspect <containerid>|grep -i pid
1419

1520
"Pid": 876884,
1621
"PidMode": "",
1722
"PidsLimit": null,
1823
```
19-
### check network config for the container
20-
```
24+
25+
### Check network config for the container
26+
27+
```sh
2128
nsenter -t 876884 -n ip a
2229
```
23-
### link network namespace
24-
```
30+
31+
### Link network namespace
32+
33+
```sh
2534
export pid=876884
2635
ln -s /proc/$pid/ns/net /var/run/netns/$pid
2736
ip netns list
2837
```
29-
### check docker bridge on the host
30-
```
38+
39+
### Check docker bridge on the host
40+
41+
```sh
3142
brctl show
3243
ip a
3344
4: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
@@ -37,17 +48,23 @@ ip a
3748
inet6 fe80::42:35ff:fe40:d38b/64 scope link
3849
valid_lft forever preferred_lft forever
3950
```
40-
### create veth pair
41-
```
51+
52+
### Create veth pair
53+
54+
```sh
4255
ip link add A type veth peer name B
4356
```
44-
### config A
45-
```
57+
58+
### Config A
59+
60+
```sh
4661
brctl addif docker0 A
4762
ip link set A up
4863
```
49-
### config B
50-
```
64+
65+
### Config B
66+
67+
```sh
5168
SETIP=172.17.0.10
5269
SETMASK=16
5370
GATEWAY=172.17.0.1
@@ -58,7 +75,9 @@ ip netns exec $pid ip link set eth0 up
5875
ip netns exec $pid ip addr add $SETIP/$SETMASK dev eth0
5976
ip netns exec $pid ip route add default via $GATEWAY
6077
```
61-
### check connectivity
62-
```
78+
79+
### Check connectivity
80+
81+
```sh
6382
curl 172.17.0.10
64-
```
83+
```

0 commit comments

Comments
 (0)