说说docker是什么?

说说docker是什么?

docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

docker做什么

在docker中,你可以将你的程序分为不同的基础部分,对于每一个基础部分都可以当做一个应用程序来管理

docker能够帮助你快速地测试、快速地编码、快速地交付,并且缩短你从编码到运行应用的周期

docker使用轻量级的容器虚拟化平台,并且结合工作流和工具,来帮助你管理、部署你的应用程序

docker架构

docker是CS架构,主要由下面三部分组成

docker daemon:运行在宿主机上,docker守护进程,用户通过docker client(docker命令)与docker daemon交互

docker client: docker 命令行工具,是用户使用docker的主要方式,docker client与docker daemon通信并将结果返回给用户,docker client也可以通过socket或者RESTful api访问远程的docker daemon

docker hub/registry:共享和管理docker镜像,用户可以上传或者下载上面的镜像,官方地址为

https://registry.hub.docker.com ,也可以搭建自己私有的docker registry

docker技术术语

docker的几个技术:namespace,cgroups,veth,bridge,copy-on-write,image,container

其中namespace和cgroup是其核心技术,我们主要来介绍这两个

a. namespace

负责隔离资源,它让进程拥有独立的进程号,网络,文件系统等,不同的namespace下的进程互不可见,目前的Docker可以通过exec子命令直接切换到进程所在的namespace

docker使用到的命名空间有:

* pid命名空间:使用在进程隔离(PID: Process ID)

* net命名空间:使用在管理网络接口(NET: Networking)

* ipc命名空间:使用在管理进程间通信资源(IPC: InterProcess Communication)

* mnt命名空间:使用在管理挂载点(MNT: Mount)

* uts命名空间:使用在隔离内核和版本标识(UTS: Unix Timesharing System)

b. cgroups

cgroup负责限制资源,主要体现在cpu、内存、磁盘

CPU子系统

cgroups提供了三种限制CPU资源的方式:cpuset, cpuquota和cpushares

* cpuset可以限制进程使用的cpu核数,通过cpuset/cpuset.cpus来管理,相应的命令如下

docker run –cpuset-cpus 0-d –name apache apache

* cpuquota以时间片的使用率来限制CPU资源,要比cpuset的细粒度大一些,只需要设置一个相对100000的值就可以达到限制一个百分比的效果,通过 cpu/cpu.cfsperiodus (配置时间片单位,默认为100000)和 cpu/cpu.cfsquotaus (时间片占比)两个文件来管理,相应的命令如下

docker run –cpu-quota 50000-d –name apache apache

* cpushares根据权重来分配CPU资源,比如如果只有一个进程权重为100,那么进程可以使用100%的CPU资源,如果有两个进程且权重都是100,那么每个进程可以使用50%的CPU资源, 通过 cpu/cpu.shares 来管理,相应的命令如下

docker run –cpu-shares 1024-d –name apache apache

内存子系统

* cgroups对内存的限制包括物理内存和swap,当进程使用内存达到上限时会被kill,关于内存限制的文件如下:

memory.limitinbytes

memory.softlimitinbytes memory.memsw.limitinbyte,需要注意的一点是docker默认会将swap的限制设置为2倍内存,实际使用的内存可能会大于-m 设置的内存大小,相应的docker命令

docker run -m 100m -d –name apache apache

blkio子系统

* blkio子系统的功能是对块设备读写的速率限制,目前 blkio 子系统提供的两种控制策略,一个是权重比例方式的控制,另一个是针对 IO 带宽和 IOPS 的控制.前者是针对blkio.weight 分配权重,后者对

blkio.throttle.writeiopsdevice 进行限制。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Proudly powered by WordPress | Theme: HoneyWaves by SpiceThemes