Docker相关操作¶
一. Docker与操作系统的关系¶
Docker是系统内的一个进程,靠namespace隔离。
容器没有自己的单独的内核,使用的内核时宿主机的。
对操作系统来说,容器的运行就是一个进程。
将容器所对应的进程结束掉,容器也会结束。
容器的声明完全取决于1号进程,当1号进程结束时,容器退出。
二. Docker的隔离机制¶
Docker使用Namespace隔离。(命名空间)
| Namespace | 作用 | 效果 |
|---|---|---|
| PID | 进程ID隔离 | 容器内进程从PID1开始,容器内看不到宿主机进程 |
| Mount | 挂载点隔离 | 容器有自己的根目录文件系统 |
| net | 网络栈隔离 | 容器有独立的网卡IP和端口空间 |
| UTS | 主机名/域名隔离 | 容器可以使用自己的hostname,不影响宿主机 |
| IPC | 进程间通信隔离 | 信号量,消息队列互不干扰 |
| user | 用户/组ID隔离 | 容器内的root映射到宿主机的普通用户 |
| cgroup | cgroup视图隔离 | 容器只能看到自己的资源限制 |
三. Docker的资源限制¶
1. 内存限制¶
-m或者
[root@4 ~]# docker run -itd --name test01 -m 300MB httpd:latest
b58697d745eaec4e06343e57f256d0502ad7d907e9ce1eff5b56008c48942bd6
[root@4 ~]# docker run -itd --name test02 -m 500MB httpd:latest
496e3b2375b76cdac050405ca3ce7e7134fe73d15b1a219564b517f3f7cfc1b7
[root@4 ~]# docker stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
496e3b2375b7 test02 0.00% 12.55MiB / 500MiB 2.51% 936B / 126B 0B / 4.1kB 82
b58697d745ea test01 0.00% 18.14MiB / 300MiB 6.05% 1.28kB / 126B 13.4MB / 4.1kB 82