docker工作原理
Docker是一个Client-Server结构的系统,Docker的守护进程运行在主机上。通过Socket从客户端访问。
Docker-Server接收到Docker-Client的指令,就会执行这个命令!
docker核心三大组件
Image代表镜像 container代表容器 repository代表仓库
为什么docker比虚拟机块
1.docker使用的cpu、内存等硬件资源都是直接使用物理机的硬件
2.docker使用的系统内核也是宿主机的。docker新建一个容器时,不需要重新加载一个系统内核,避免引导。而新建虚拟机时,得加载系统内核,就很费时间
传统虚拟化和docker虚拟化的区别
传统虚拟化:原生架构、完全性解藕、系统占用率高、占用资源较多
docker虚拟化:寄生架构、半解藕、进程级的服务、快捷方便、占用资源少、拥有较好的资源隔离、资源限制,性能强。
namespace(名称空间)
六大隔离-------实现了容器与宿主机、容器与容器之间的隔离
IPC:共享内存
MNT:挂载点、文件系统
NET:网络栈
PID:进程编号
USER:用户、组
UTS:主机名、域名
cgroup(控制组)
四大功能-------限制docker容器对宿主机资源的使用
1.资源限制:对进程组使用的资源总额进行限制
2.优先级分配:通过分配cpu时间片和硬盘io带宽大小,控制了进程运行的优先级
3.资源统计:统计资源使用量,比如cpu使用时间、内存使用量等。
4.进程控制:可以对进程组进行挂起、恢复等操作
内存限额
物理内存--swap(交换分区)
举例:
运行一个容器,限制该容器200M内存和100M的swap
docker run -itd --name lizi -m 200MB --memory-swap 300MB centos:7
cpu限制
举例:
运行一个容器,限制该容器cpu权重为512(默认1024)
docker run -itd --name lizi -c 512 centos:7
io限制
bps读取量 iops读取次数
--device-read-bps: 显示读取某个设备的bps。
--device-write-bps: 显示写入某个设备的bps。
--device-read-iops: 显示读取某个设备的iops。
--device-write-iops: 显示写入某个设备的iops。
例子:
运行一个容器,限制写入/dev/sda这块磁盘的bps上限为30MB
docker run -itd --name lizi --device -write-bps /dev/sda:30MB centos:7