云环境搭建一,一篇小文快速读懂docker

2019-06-16 20:04发布

docker不是容器,是容器管理软件,随着行业发展docker的容器引擎已经从lxc(linux container)-->libcontainer-->runc.docker已经是一个遵从业界标准的功能完整的容器管理软件。

在云建设过程中,逐步从主机的虚拟,到更有利于资源利用的进程的模拟。

对进程的模拟可以做到,便捷,轻量,方便部署和销毁,提升资源利用效率, 减少中间虚拟,提高整体效率。

那么对 用户应用的虚拟机进程的模拟最重要的是隔离进程资源,保证系统运行独立,互不干扰,共享底层硬件资源,需要主机虚拟,运行操作系统内核,去模拟内存,io,cpu等。

在硬件平台上对隔离环境管理,保持用户应用运行的隔离环境,在这个环境中运行一个或部分进程,包括管理空间,用来管理整个容器群的管理。

对进程的模拟,一般很难有主机空间模拟那样隔离彻底。

对主机空间隔离彻底,对隔离空间我们一般称之为容器,在容器内一般只能看到自己的进程。

隔离内容包括:uts,主机名,域名,根目录(Mount),独立ipc

需要在容器内对进程数PID进行每个进程的伪装,伪装住空间的用户为容器的root,包括独立的网络(TCP/IP栈),容器可以通过设置名称空间(namespace)机制进行隔离。

同时也需要内核提供功能限制可用资源总量,比例分配,绑定固定值等对硬件资源进行配给,避免某个容器强占所有内存空间。

这时候可以利用分组指派不同的资源,可以根据分组使用空间,和使用资源的能力和权限。通过CGP(Control Groups cgroups)对系统资源进行指派隔离,包括上面所指的内存,io,cpu,网络等。

docker聪明之处是避免了之前LXC部署采用的模板技术(lxc-create template),而是采用了镜像,这样通过建立统一的仓库,存放通用服务软件镜像的办法,使用户下载镜像启动用户,并自主对镜像进行叠放(按规则放置镜像。)这样简化了容器的使用难度,一个容器一般只运行一个进程,通过隔离提高安全性。

这样在容器中每个进程都有自己的空间,各自独立的管理工具,保持主进程和容器生命周期的的关联程度,即主进程完结则可以保持容器也随之销毁,这样可以快速回收空间,提升利用效率,处理临时任务,比较灵活,在空闲设备上做处理,减少应用程序的特别定制,这样的问题是开发部署比较方便,可是运维就比较繁琐复杂,对如何监视跟踪每个进程,如何动态管理进程,都提出了很高的要求。

docker一般多个容器采用分层实现,联合挂载的方式,比如最底层是系统引导和核心,上面是文件系统,在上面加载镜像,比如nginx,tomcat等,同时可指定存储层等,用来保存文件。

附记:

docker下载空间:hub.docker.com

docker 架构(docker architecture):cs架构,socket,容器 镜像

docker既相关组件都采用go语言开发。

文章来源: https://www.toutiao.com/group/6703088037141676556/