专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

Docker基础(一)

  一、简介:
  前言
  统称来说,容器是一种工具,指的是可以装下其它物品的工具,以方便人类归纳放置物品、存储和异地运输,具体来说比如人类使用的衣柜、行李箱、背包等可以成为容器,但今天我们所说的容器是一种IT技术。
  容器技术是虚拟化、云计算、大数据之后的一门新兴的并且是炙手可热的新技术,容器技术提高了硬件资源利用率、方便了企业的业务快速横向扩容、实现了业务启机自愈功能,因此未来数年会是一个容器愈发流行的时代,这是一个对于IT行业来说非常有影响和价值的技术,而对于IT行业的从业者来说,熟练掌握容器技术无疑是一个很有前景的行业工作机会。
  容器技术最早出现在freebsd叫做jail。
  1。1:docker简介:
  1。1。1:Docker是什么:
  首先Docker是一个在2013年开源的应用程序并且是一个基于go语言编写是一个开源的PAAS服务(PlatformasaService,平台即服务的缩写),go语言是由google开发,docker公司最早叫dotCloud后由于Docker开源后大受欢迎就将公司改名为DockerInc,总部位于美国加州的旧金山,Docker是基于linux内核实现,Docker最早采用LXC技术(LinuXContainer的简写,LXC是Linux原生支持的容器技术,可以提供轻量级的虚拟化,可以说docker就是基于LXC发展起来的(0。1。5(20130417),提供LXC的高级封装,发展标准的配置方法),而虚拟化技术KVM(KernelbasedVirtualMachine)基于模块实现,Docker后改为自己研发并开源的runc技术运行容器(1。11。0(20160413)。
  Dockernowreliesoncontainerdandrunctospawncontainers。
  Docker相比虚拟机的交付速度更快,资源消耗更低,Docker采用客户端服务端架构,使用远程API来管理和创建Docker容器,其可以轻松的创建一个轻量级的、可移植的、自给自足的容器,docker的三大理念是build(构建)、ship(运输)、run(运行),Docker遵从apache2。0协议,并通过(namespace及cgroup等)来提供容器的资源隔离与安全保障等,所以Docke容器在运行时不需要类似虚拟机(空运行的虚拟机占用物理机的一定性能开销)的额外资源开销,因此可以大幅提高资源利用率,总而言之Docker是一种用了新颖方式实现的轻量级虚拟机。类似于VM但是在原理和应用上和VM的差别还是很大的,并且docker
  的专业叫法是应用容器(ApplicationContainer)。
  1。1。2:Docker的组成:
  https:docs。docker。comenginedockeroverview
  Docker主机(Host):一个物理机或虚拟机,用于运行Docker服务进程和容器。
  Docker服务端(Server):Docker守护进程,运行docker容器。
  Docker客户端(Client):客户端使用docker命令或其他工具调用dockerAPI。
  Docker仓库(Registry):保存镜像的仓库,类似于git或svn这样的版本控制系
  Docker镜像(Images):镜像可以理解为创建实例使用的模板。
  Docker容器(Container):容器是从镜像生成对外提供服务的一个或一组服务。官方仓库:https:hub。docker。com
  1。1。3:Docker对比虚拟机:
  资源利用率更高:一台物理机可以运行数百个容器,但是一般只能运行数十个虚拟机。
  开销更小:不需要启动单独的虚拟机占用硬件资源。
  启动速度更快:可以在数秒内完成启动。
  使用虚拟机是为了更好的实现服务运行环境隔离,每个虚拟机都有独立的内核,虚拟化可以实现不同操作系统的虚拟机,但是通常一个虚拟机只运行一个服务,很明显资源利用率比较低且造成不必要的性能损耗,我们创建虚拟机的目的是为了运行应用程序,比如Nginx。PHP、Tomcat等web程序,使用虚拟机无疑带来了一些不必要的资源开销,但是容器技术则基于减少中间运行环节带来较大的性能提升。
  但是,如上图一个宿主机运行了N个容器,多个容器带来的以下问题怎么解决:
  1。怎么样保证每个容器都有不同的文件系统并且能互不影响?
  2。一个docker主进程内的各个容器都是其子进程,那么实现同一个主进程下不同类型的子进程?各个进程间通信能相互访问(内存数据)吗?
  3。每个容器怎么解决IP及端口分配的问题?
  4。多个容器的主机名能一样吗?
  5。每个容器都要不要有root用户?怎么解决账户重名问题?
  以上问题怎么解决?
  1。1。4:LinuxNamespace技术:
  namespace是Linux系统的底层概念,在内核层实现,即有一些不同类型的命名空间被部署在核内,各个docker容器运行在同一个docker主进程并且共用同一个宿主机系统内核,各docker容器运行在宿主机的用户空间,每个容器都要有类似于虚拟机一样的相互隔离的运行空间,但是容器技术是在一个进程内实现运行指定服务的运行环境,并且还可以保护宿主机内核不受其他进程的干扰和影响,如文件系统空间、网络空间、进程空间等,目前主要通过以下技术实现容器运行空间的相互隔离
  1。1。4。1:MNTNamespace:
  每个容器都要有独立的根文件系统有独立的用户空间,以实现在容器里面启动服务并且使用容器的运行环境,即一个宿主机是ubuntu的服务器,可以在里面启动一个centos运行环境的容器并且在容器里面启动一个Nginx服务,此Nginx运行时使用的运行环境就是centos系统目录的运行环境,但是在容器里面是不能访问宿主机的资源,宿主机是使用了chroot技术把容器锁定到一个指定的运,行目录里面。
  例如:varlibcontainerdio。containerd。runtime。v1。linuxmoby容器ID
  1。1。4。2:IPCNamespace:
  一个容器内的进程间通信,允许一个容器内的不同进程的(内存、缓存等)数据访问,但是不能跨容器访问其他容器的数据。
  1。1。4。3:UTSNamespace:
  UTSnamespace(UNIXTimesharingSystem包含了运行内核的名称、版本、底层体系结构类型等信息)用于系统标识,其中包含了hostname和域名
  domainname,它使得一个容器拥有属于自己hostname标识,这个主机名标识独立于宿主机系统和其上的其他容器。
  1。1。4。4:PIDNamespace:
  Linux系统中,有一个PID为1的进程(initsystemd)是其他所有进程的父进程,那么在每个容器内也要有一个父进程来管理其下属的子进程,那么多个容器的进程通PIDnamespace进程隔离(比如PID编号重复、器内的主进程生成与回收子进程等)。
  1。1。4。5:NetNamespace:
  每一个容器都类似于虚拟机一样有自己的网卡、监听端口、TCPIP协议栈等,Docker使用networknamespace启动一个vethX接口,这样你的容器将拥有它自己的桥接ip地址,通常是docker0,而docker0实质就是Linux的虚拟网桥,网桥是在OSI七层模型的数据链路层的网络设备,通过mac地址对网络进行划分,并且在不同网络直接传递数据。
  1。1。4。5。2:查看宿主机桥接设备:
  通过brctlshow命令查看桥接设备:
  1。1。4。5。3实逻辑网络图
  1。1。4。5。4宿主机iptables规则
  1。1。4。6:UserNamespace:
  各个容器内可能会出现重名的用户和用户组名称,或重复的用户UID或者GID,那么怎么隔离各个容器内的用户空间呢?
  UserNamespace允许在各个宿主机的各个容器空间内创建相同的用户名以及相同的用户UID和GID,只是会把用户的作用范围限制在每个容器内,即A容器和B容器可以有相同的用户名称和ID的账户,但是此用户的有效范围仅是当前容器内,不能访问另外一个容器内的文件系统,即相互隔离、互补影响、永不相见。
  1。1。5:Linuxcontrolgroups:
  在一个容器,如果不对其做任何资源限制,则宿主机会允许其占用无限大的内存空间,有时候会因为代码bug程序会一直申请内存,直到把宿主机内存占完,为了避免此类的问题出现,宿主机有必要对容器进行资源分配限制,比如CPU。内存等,LinuxCgroups的全称是LinuxControlGroups,它最主要的作用,就是限制一个进程组能够使用的资源上限,包括CPU、内存、磁盘、网络带宽等等。此外,还能够对进程进行优先级设置,以及将进程挂起和恢复等操作。
  1。1。5。1:验证系统cgroups:
  Cgroups在内核层默认已经开启,从centos和ubuntu对比结果来看,显然内核较新的ubuntu支持的功能更多
  1。1。5。1。1Centos7。6cgroups
  1。1。5。1。2Ubuntucgroups
  1。1。5。1。3cgroup中内存模块
  1。1。5。1。4cgroup具体实现
  blkio:块设备IO限制。
  cpu:使用调度程序为cgroup任务提供cpu的访问。
  cpuacct:产生cgroup任务的cpu资源报告。
  cpuset:如果是多核心的cpu,这个子系统会为cgroup任务分配单独的cpu和内存。
  devices:允许或拒绝cgroup任务对设备的访问。
  freezer:暂停和恢cgroup任务。
  memory:设置每个cgroup的内存限制以及产生内存资源报告。
  netcls:标记每个网络包以供cgroup方便使用。
  ns:命名空间子系统。
  perfevent:增加了对每group的监测跟踪的能力,可以监测属于某个特定的
  group的所有线程以及运行在特定CPU上的线程。
  1。1。5。1。5查看系统cgroups
  有了以上的chroot,namespace,cgroups就具备了基础的容器运行环境,但是还需要有相应的容器创建与删除的管理工具、以及怎么样把容器运行起来、容器数据怎么处理、怎么进行启动与关闭等问题需要解决,于是容器管理技术出现
  了。
  1。1。6:容器管理工具:
  目前主要是使用docker,早期有使用Ixc。
  1。1。6。1:Ixc:
  LXC:LXC为LinuxContainer的简写。可以提供轻量级的虚拟化,以便隔离进程和资源,官方网站:https:linuxcontainers。org
  1。1。6。2:docker:
  Docker启动一个容器也需要一个外部模板但是较多镜像,docke的镜像可以保存在一个公共的地方共享使用,只要把镜像下载下来就可以使用,最主要的是可以在镜像基础之上做自定义配置并且可以再把其提交为一个镜像,一个镜像可以被启动为多个容器。
  Docker的镜像是分层的,镜像底层为库文件且只读层即不能写入也不能删除数据,从镜像加载启动为一个容器后会生成一个可写层,其写入的数据会复制到容器目录,但是容器内的数据在删除容器后也会被随之删除。
  1。1。6:Docker的优势:
  快速部署:短时间内可以部署成百上千个应用,更快速交付到线上。
  高效虚拟化:不需要额外的hypervisor支持,直接基于linux实现应用虚拟化,相比虚拟机大幅提高性能和效率。
  节省开支:提高服务器利用率,降低IT支出。
  简化配置:将运行环境打包保存至容器,使用时直接启动即可。
  快速迁移和扩展:可跨平台运行在物理机、虚拟机,公有云等环境,良好的兼容性可以方便将应用从A宿主机迁移到B宿主机,甚至是A平台迁移到B平台。
  1。1。7:Docker的缺点:
  隔离性:各应用之间的隔离不如虚拟机彻底。
  1。1。8:docker(容器)的核心技术:
  1。1。8。1:容器规范:
  容器技术除了的docker之外,还有coreOS的rkt,还有阿里的Pouch,为了保证容器生态的标准性和健康可持续发展,包括Linux基金会、Docker、微软、红帽谷歌和、IBM、等公司在2015年6月共同成立了一个叫opencontainer(OCI)的组织,其目的就是制定开放的标准的容器规范,目前OCI一共发布了两个规范,分别是runtimespec和imageformatspec,有了这两个规范,不同的容器公司开发的容器只要兼容这两个规范,就可以保证容器的可移植性和相互可操作性。
  1。1。8。1。1:容器runtime(runtimespec):
  runtime是真正运行容器的地方,因此为了运行不同的容器runtime需要和操作系统内核紧密合作相互在支持,以便为容器提供相应的运行环境。
  目前主流的三种runtime:
  Lxc:linux上早期的runtime,Docker早期就是采用Ixc作为runtime。
  runc:目前Docker默认的runtime,runc遵守OCI规范,因此可以兼容Ixc。
  rkt:是CoreOS开发的容器runtime,也符合OCI规范,所以使用rktruntime也可以运行Docker容器。
  runtime主要定义了以下规范,并以json格式保存在rundockerruntimeruncmoby容器IDstate。json文件,此文件会根据容器的状态
  实时更新内容
  1。1。8。1。2:容器镜像(imageformatspec):
  OCI容器镜像主要包含以下内容:
  1。1。8。2:容器管理工具:
  管理工具连接runtime与用户,对用户提供图形或命令方式操作,然后管理工具将用户操作传递给runtime执行。
  Ixc是Ixd的管理工具。
  Runc的管理工具是dockerengine,dockerengine包含后台deamoncli两部分,大家经常提到的Docker就是指的dockerengine。
  Rkt的管理工具是rktcli。
  1。1。8。3:容器定义工具:
  容器定义工具允许用户定义容器的属性和内容,以方便容器能够被保存、共享和重建。
  Dockerimage:是docker容器的模板,runtime依据dockerimage创建容器。
  Dockerfile:包含N个命令的文本文件,通过dockerfile创建出dockerimage。ACI(Appcontainerimage):与dockerimage类似,是CoreOS开发的rkt容器
  的镜像格式。
  1。1。8。4:Registry:
  统一保存镜像而且是多个不同镜像版本的地方,叫做镜像仓库。
  Imageregistry:docker官方提供的私有仓库部署工具。
  Dockerhub:docker官方的公共仓库,已经保存了大量的常用镜像,可以方便大家直接使用。
  Harbor:vmware提供的自带web界面自带认证功能的镜像仓库,目前有很多公司使用。
  1。1。8。5:编排工具:
  当多个容器在多个主机运行的时候,单独管理容器是相当复杂而且很容易出错,而且也无法实现某一台主机容机后容器自动迁移到其他主机从而实现高可用的目的,也无法实现动态伸缩的功能,因此需要有一种工具可以实现统一管理、动态伸缩、故障自愈、批量执行等功能,这就是容器编排引擎。
  容器编排通常包括容器管理、调度、集群定义和服务发现等功能。
  Dockerswarm:docker开发的容器编排引擎。
  Kubernetes:google领导开发的容器编排引擎,内部项目为Borg,且其同时支持docker和CoreOS。
  MesosMarathon:通用的集群组员调度平台,mesos(资源分配)与marathon(容器编排平台)一起提供容器编排引警功能,
  一、简介:
  前言
  统称来说,容器是一种工具,指的是可以装下其它物品的工具,以方便人类归纳放置物品、存储和异地运输,具体来说比如人类使用的衣柜、行李箱、背包等可以成为容器,但今天我们所说的容器是一种IT技术。
  容器技术是虚拟化、云计算、大数据之后的一门新兴的并且是炙手可热的新技术,容器技术提高了硬件资源利用率、方便了企业的业务快速横向扩容、实现了业务启机自愈功能,因此未来数年会是一个容器愈发流行的时代,这是一个对于IT行业来说非常有影响和价值的技术,而对于IT行业的从业者来说,熟练掌握容器技术无疑是一个很有前景的行业工作机会。
  容器技术最早出现在freebsd叫做jail。
  1。1:docker简介:
  1。1。1:Docker是什么:
  首先Docker是一个在2013年开源的应用程序并且是一个基于go语言编写是一个开源的PAAS服务(PlatformasaService,平台即服务的缩写),go语言是由google开发,docker公司最早叫dotCloud后由于Docker开源后大受欢迎就将公司改名为DockerInc,总部位于美国加州的旧金山,Docker是基于linux内核实现,Docker最早采用LXC技术(LinuXContainer的简写,LXC是Linux原生支持的容器技术,可以提供轻量级的虚拟化,可以说docker就是基于LXC发展起来的(0。1。5(20130417),提供LXC的高级封装,发展标准的配置方法),而虚拟化技术KVM(KernelbasedVirtualMachine)基于模块实现,Docker后改为自己研发并开源的runc技术运行容器(1。11。0(20160413)。
  Dockernowreliesoncontainerdandrunctospawncontainers。
  Docker相比虚拟机的交付速度更快,资源消耗更低,Docker采用客户端服务端架构,使用远程API来管理和创建Docker容器,其可以轻松的创建一个轻量级的、可移植的、自给自足的容器,docker的三大理念是build(构建)、ship(运输)、run(运行),Docker遵从apache2。0协议,并通过(namespace及cgroup等)来提供容器的资源隔离与安全保障等,所以Docke容器在运行时不需要类似虚拟机(空运行的虚拟机占用物理机的一定性能开销)的额外资源开销,因此可以大幅提高资源利用率,总而言之Docker是一种用了新颖方式实现的轻量级虚拟机。类似于VM但是在原理和应用上和VM的差别还是很大的,并且docker
  的专业叫法是应用容器(ApplicationContainer)。
  1。1。2:Docker的组成:
  https:docs。docker。comenginedockeroverview
  Docker主机(Host):一个物理机或虚拟机,用于运行Docker服务进程和容器。
  Docker服务端(Server):Docker守护进程,运行docker容器。
  Docker客户端(Client):客户端使用docker命令或其他工具调用dockerAPI。
  Docker仓库(Registry):保存镜像的仓库,类似于git或svn这样的版本控制系
  Docker镜像(Images):镜像可以理解为创建实例使用的模板。
  Docker容器(Container):容器是从镜像生成对外提供服务的一个或一组服务。官方仓库:https:hub。docker。com
  1。1。3:Docker对比虚拟机:
  资源利用率更高:一台物理机可以运行数百个容器,但是一般只能运行数十个虚拟机。
  开销更小:不需要启动单独的虚拟机占用硬件资源。
  启动速度更快:可以在数秒内完成启动。
  使用虚拟机是为了更好的实现服务运行环境隔离,每个虚拟机都有独立的内核,虚拟化可以实现不同操作系统的虚拟机,但是通常一个虚拟机只运行一个服务,很明显资源利用率比较低且造成不必要的性能损耗,我们创建虚拟机的目的是为了运行应用程序,比如Nginx。PHP、Tomcat等web程序,使用虚拟机无疑带来了一些不必要的资源开销,但是容器技术则基于减少中间运行环节带来较大的性能提升。
  但是,如上图一个宿主机运行了N个容器,多个容器带来的以下问题怎么解决:
  1。怎么样保证每个容器都有不同的文件系统并且能互不影响?
  2。一个docker主进程内的各个容器都是其子进程,那么实现同一个主进程下不同类型的子进程?各个进程间通信能相互访问(内存数据)吗?
  3。每个容器怎么解决IP及端口分配的问题?
  4。多个容器的主机名能一样吗?
  5。每个容器都要不要有root用户?怎么解决账户重名问题?
  以上问题怎么解决?
  1。1。4:LinuxNamespace技术:
  namespace是Linux系统的底层概念,在内核层实现,即有一些不同类型的命名空间被部署在核内,各个docker容器运行在同一个docker主进程并且共用同一个宿主机系统内核,各docker容器运行在宿主机的用户空间,每个容器都要有类似于虚拟机一样的相互隔离的运行空间,但是容器技术是在一个进程内实现运行指定服务的运行环境,并且还可以保护宿主机内核不受其他进程的干扰和影响,如文件系统空间、网络空间、进程空间等,目前主要通过以下技术实现容器运行空间的相互隔离
  1。1。4。1:MNTNamespace:
  每个容器都要有独立的根文件系统有独立的用户空间,以实现在容器里面启动服务并且使用容器的运行环境,即一个宿主机是ubuntu的服务器,可以在里面启动一个centos运行环境的容器并且在容器里面启动一个Nginx服务,此Nginx运行时使用的运行环境就是centos系统目录的运行环境,但是在容器里面是不能访问宿主机的资源,宿主机是使用了chroot技术把容器锁定到一个指定的运,行目录里面。
  例如:varlibcontainerdio。containerd。runtime。v1。linuxmoby容器ID
  1。1。4。2:IPCNamespace:
  一个容器内的进程间通信,允许一个容器内的不同进程的(内存、缓存等)数据访问,但是不能跨容器访问其他容器的数据。
  1。1。4。3:UTSNamespace:
  UTSnamespace(UNIXTimesharingSystem包含了运行内核的名称、版本、底层体系结构类型等信息)用于系统标识,其中包含了hostname和域名
  domainname,它使得一个容器拥有属于自己hostname标识,这个主机名标识独立于宿主机系统和其上的其他容器。
  1。1。4。4:PIDNamespace:
  Linux系统中,有一个PID为1的进程(initsystemd)是其他所有进程的父进程,那么在每个容器内也要有一个父进程来管理其下属的子进程,那么多个容器的进程通PIDnamespace进程隔离(比如PID编号重复、器内的主进程生成与回收子进程等)。
  1。1。4。5:NetNamespace:
  每一个容器都类似于虚拟机一样有自己的网卡、监听端口、TCPIP协议栈等,Docker使用networknamespace启动一个vethX接口,这样你的容器将拥有它自己的桥接ip地址,通常是docker0,而docker0实质就是Linux的虚拟网桥,网桥是在OSI七层模型的数据链路层的网络设备,通过mac地址对网络进行划分,并且在不同网络直接传递数据。
  1。1。4。5。2:查看宿主机桥接设备:
  通过brctlshow命令查看桥接设备:
  1。1。4。5。3实逻辑网络图
  1。1。4。5。4宿主机iptables规则
  1。1。4。6:UserNamespace:
  各个容器内可能会出现重名的用户和用户组名称,或重复的用户UID或者GID,那么怎么隔离各个容器内的用户空间呢?
  UserNamespace允许在各个宿主机的各个容器空间内创建相同的用户名以及相同的用户UID和GID,只是会把用户的作用范围限制在每个容器内,即A容器和B容器可以有相同的用户名称和ID的账户,但是此用户的有效范围仅是当前容器内,不能访问另外一个容器内的文件系统,即相互隔离、互补影响、永不相见。
  1。1。5:Linuxcontrolgroups:
  在一个容器,如果不对其做任何资源限制,则宿主机会允许其占用无限大的内存空间,有时候会因为代码bug程序会一直申请内存,直到把宿主机内存占完,为了避免此类的问题出现,宿主机有必要对容器进行资源分配限制,比如CPU。内存等,LinuxCgroups的全称是LinuxControlGroups,它最主要的作用,就是限制一个进程组能够使用的资源上限,包括CPU、内存、磁盘、网络带宽等等。此外,还能够对进程进行优先级设置,以及将进程挂起和恢复等操作。
  1。1。5。1:验证系统cgroups:
  Cgroups在内核层默认已经开启,从centos和ubuntu对比结果来看,显然内核较新的ubuntu支持的功能更多
  1。1。5。1。1Centos7。6cgroups
  1。1。5。1。2Ubuntucgroups
  1。1。5。1。3cgroup中内存模块
  1。1。5。1。4cgroup具体实现
  blkio:块设备IO限制。
  cpu:使用调度程序为cgroup任务提供cpu的访问。
  cpuacct:产生cgroup任务的cpu资源报告。
  cpuset:如果是多核心的cpu,这个子系统会为cgroup任务分配单独的cpu和内存。
  devices:允许或拒绝cgroup任务对设备的访问。
  freezer:暂停和恢cgroup任务。
  memory:设置每个cgroup的内存限制以及产生内存资源报告。
  netcls:标记每个网络包以供cgroup方便使用。
  ns:命名空间子系统。
  perfevent:增加了对每group的监测跟踪的能力,可以监测属于某个特定的
  group的所有线程以及运行在特定CPU上的线程。
  1。1。5。1。5查看系统cgroups
  有了以上的chroot,namespace,cgroups就具备了基础的容器运行环境,但是还需要有相应的容器创建与删除的管理工具、以及怎么样把容器运行起来、容器数据怎么处理、怎么进行启动与关闭等问题需要解决,于是容器管理技术出现
  了。
  1。1。6:容器管理工具:
  目前主要是使用docker,早期有使用Ixc。
  1。1。6。1:Ixc:
  LXC:LXC为LinuxContainer的简写。可以提供轻量级的虚拟化,以便隔离进程和资源,官方网站:https:linuxcontainers。org
  1。1。6。2:docker:
  Docker启动一个容器也需要一个外部模板但是较多镜像,docke的镜像可以保存在一个公共的地方共享使用,只要把镜像下载下来就可以使用,最主要的是可以在镜像基础之上做自定义配置并且可以再把其提交为一个镜像,一个镜像可以被启动为多个容器。
  Docker的镜像是分层的,镜像底层为库文件且只读层即不能写入也不能删除数据,从镜像加载启动为一个容器后会生成一个可写层,其写入的数据会复制到容器目录,但是容器内的数据在删除容器后也会被随之删除。
  1。1。6:Docker的优势:
  快速部署:短时间内可以部署成百上千个应用,更快速交付到线上。
  高效虚拟化:不需要额外的hypervisor支持,直接基于linux实现应用虚拟化,相比虚拟机大幅提高性能和效率。
  节省开支:提高服务器利用率,降低IT支出。
  简化配置:将运行环境打包保存至容器,使用时直接启动即可。
  快速迁移和扩展:可跨平台运行在物理机、虚拟机,公有云等环境,良好的兼容性可以方便将应用从A宿主机迁移到B宿主机,甚至是A平台迁移到B平台。
  1。1。7:Docker的缺点:
  隔离性:各应用之间的隔离不如虚拟机彻底。
  1。1。8:docker(容器)的核心技术:
  1。1。8。1:容器规范:
  容器技术除了的docker之外,还有coreOS的rkt,还有阿里的Pouch,为了保证容器生态的标准性和健康可持续发展,包括Linux基金会、Docker、微软、红帽谷歌和、IBM、等公司在2015年6月共同成立了一个叫opencontainer(OCI)的组织,其目的就是制定开放的标准的容器规范,目前OCI一共发布了两个规范,分别是runtimespec和imageformatspec,有了这两个规范,不同的容器公司开发的容器只要兼容这两个规范,就可以保证容器的可移植性和相互可操作性。
  1。1。8。1。1:容器runtime(runtimespec):
  runtime是真正运行容器的地方,因此为了运行不同的容器runtime需要和操作系统内核紧密合作相互在支持,以便为容器提供相应的运行环境。
  目前主流的三种runtime:
  Lxc:linux上早期的runtime,Docker早期就是采用Ixc作为runtime。
  runc:目前Docker默认的runtime,runc遵守OCI规范,因此可以兼容Ixc。
  rkt:是CoreOS开发的容器runtime,也符合OCI规范,所以使用rktruntime也可以运行Docker容器。
  runtime主要定义了以下规范,并以json格式保存在rundockerruntimeruncmoby容器IDstate。json文件,此文件会根据容器的状态
  实时更新内容
  1。1。8。1。2:容器镜像(imageformatspec):
  OCI容器镜像主要包含以下内容:
  1。1。8。2:容器管理工具:
  管理工具连接runtime与用户,对用户提供图形或命令方式操作,然后管理工具将用户操作传递给runtime执行。
  Ixc是Ixd的管理工具。
  Runc的管理工具是dockerengine,dockerengine包含后台deamoncli两部分,大家经常提到的Docker就是指的dockerengine。
  Rkt的管理工具是rktcli。
  1。1。8。3:容器定义工具:
  容器定义工具允许用户定义容器的属性和内容,以方便容器能够被保存、共享和重建。
  Dockerimage:是docker容器的模板,runtime依据dockerimage创建容器。
  Dockerfile:包含N个命令的文本文件,通过dockerfile创建出dockerimage。ACI(Appcontainerimage):与dockerimage类似,是CoreOS开发的rkt容器
  的镜像格式。
  1。1。8。4:Registry:
  统一保存镜像而且是多个不同镜像版本的地方,叫做镜像仓库。
  Imageregistry:docker官方提供的私有仓库部署工具。
  Dockerhub:docker官方的公共仓库,已经保存了大量的常用镜像,可以方便大家直接使用。
  Harbor:vmware提供的自带web界面自带认证功能的镜像仓库,目前有很多公司使用。
  1。1。8。5:编排工具:
  当多个容器在多个主机运行的时候,单独管理容器是相当复杂而且很容易出错,而且也无法实现某一台主机容机后容器自动迁移到其他主机从而实现高可用的目的,也无法实现动态伸缩的功能,因此需要有一种工具可以实现统一管理、动态伸缩、故障自愈、批量执行等功能,这就是容器编排引擎。
  容器编排通常包括容器管理、调度、集群定义和服务发现等功能。
  Dockerswarm:docker开发的容器编排引擎。
  Kubernetes:google领导开发的容器编排引擎,内部项目为Borg,且其同时支持docker和CoreOS。
  MesosMarathon:通用的集群组员调度平台,mesos(资源分配)与marathon(容器编排平台)一起提供容器编排引警功能,

医案分享老中医巧用双花,清除胆囊息肉患者的热象!我之前接诊过一个这样的患者,就是在体检时才被查出患有胆囊息肉,他选择了及时就医治疗,规避了诱发其他疾病的风险。经过辨证后,方子就选用双花连胆汤加减进行治疗,所谓的双花就是指金银花和痛风治疗的双刃剑运动近年来,随着我国居民饮食习惯的改变,饮食中动物蛋白类食物种类和含量显著增加,导致高尿酸血症和痛风越来越常见。Meta分析显示,中国痛风总体患病率为1。1,其已成为我国第二大代谢类疾吃了这么多年的盐,你可能一直吃错了头痛水肿反应迟缓生活中你也遇到过这样的烦恼吗?这可能与你每天吃的盐有关大多数人只知道盐分为海盐井矿盐湖盐和岩盐等几大类但并非这里的所有盐都适合你想选对真正适合自己的盐还需要做更多功多少人一胃痛就吃胃药,胃病就是这样拖成癌症的!脾胃有多重要你知道吗?黄帝内经讲脾胃是后天之本,脾胃不好百病丛生。养好脾胃,是一个人生存发展的基础。中医认为,胃主受纳,为仓廪之官,脾主运化,为气血生化之源,二者在经络上互为表里,耳鸣最怕这两种维生素,看看你缺哪种呢耳鸣最怕这两种维生素,看看你缺哪种呢?除了服用药物之外,日常的维生素补充也是必不可少的,今天告诉大家两种对神经性耳鸣有帮助的维生素,大家记得适量补充。1维生素A,在耳蜗里,维生素A长期喝牛奶,脸上痘痘居然越来越多,你也是这样吗?虽然大家都说睡前一杯牛奶有助于睡眠,但是据调查发现有很多人,在长期喝了牛奶之后脸上的会长痘。特别是脸部本来容易冒痘的,越喝牛奶爆痘的越厉害,那到底是为什么呢?喝牛奶爆痘的原因?其实猪肉与蔬菜价格玩跷跷板上月CPI同比涨幅或小幅回升中新网1月12日电(中新财经记者谢艺观)1月12日,国家统计局将公布2022年全年及12月份全国居民消费价格指数(CPI),2022年12月CPI走势会如何?全年CPI是否会在3左蔬菜中蕴含的中医智慧芋头点击蓝字关注我们中文化传承医智慧别名芋艿。性味味甘辛,性平。归肠胃经。功效解毒散结消瘰。用法用量每次60120g,内服蒸食或炖汤外用捣敷或煎水洗。使用注意食滞胃痛及肠胃湿热者忌食。持续贬值,埃镑对美元汇率一度跌破31!当地居民最便宜的食物已涨价两三倍视频加载中(央视财经正点财经)近期,埃及货币埃及镑的汇率不断走弱。当地时间11日,埃及多家银行埃镑对美元汇率一度跌破1美元兑换31埃镑,与去年3月相比几乎腰斩。本币大幅贬值,再加上手机照片如何做成音乐相册?在线教学手机照片如何做成音乐相册?我们通常会用手机相册去记录生活中的美好瞬间和那些令人难忘的时光。时间一长,手机里的图片就多了起来,过了很久再翻开的时候会发现照片排版的非常凌乱,明明是同一mini主机玩家福利!七彩虹CVNB760IFROZENWIFI登陆舰来袭在首发三款MATX板型的B760主板后,七彩虹为喜爱ITX迷你主机的玩家带来了CVNB760IFROZENWIFI登陆舰主板。作为一款采用紧凑型设计的主板,七彩虹CVNB760IF
太软呀!国乒名将遭韩乒一哥淘汰首轮出局,陈熠力挫印度大将9月15日,乒乓球WTT哈萨克斯坦站迎来正赛首日的争夺,目前,双打有晋级有淘汰,基本保持一个常态,而单打有点闹心,首先,钱天一03不敌早田希娜令中国球迷略感希望,可以输!不可以被吊第一位主动退位的将军,毛主席和聂荣臻怎么劝都不改心意,他是谁1958年,朱良才旧病复发,他很清楚自己的身体情况不适合这么高强度的工作。为了不影响工作,他决定提出请辞,把工作岗位让给更有才华的年轻同志。毛主席得知后,特意让多年搭档聂荣臻调查情扫地出门!皇马两大攻击手被要求离队!7000万欧大将遭利物浦挖角对于皇马来说,球队在新赛季开赛之后的表现堪称惊艳。虽然在转会期结束之前,队内个别主力球员离开了球队,但从球队的表现来看,他们并没有受到影响。在联赛积分榜上,安切洛蒂的球队以5战全胜老佛爷威武!仅花费三千万欧元就让皇马中场升级,冲击双冠不是梦西甲第4轮,皇马在主场迎战已经取得联赛3连胜的皇马贝蒂斯,最终凭借维尼休斯以及罗德里戈这对巴西双子星的进球以21的比分险胜对手,新赛季继续保持全胜,势头非常的凶猛。银河战舰之所以取界面资本论坛秋季论坛华宸资本华海波政府基金投资与产业落地合作模式的分享2022年9月8日,由上海报业集团界面新闻主办云南信托作为支持企业盟浪可持续数字科技作为支持机构的第五届界面资本论坛秋季论坛在昆明中维翠湖宾馆圆满落幕。华宸资本董事长华海波出席本次杜威刘建业赵丽娜等进入第二期精英青训教练员培训班直播吧9月16日讯中国足协公布了2022年第二期精英青训教练员守门员教练员培训班的录取通知,杜威刘建业张艳茹等前国脚榜上有名。9月18日23日,中国足协将在上海举办2022年第二期恩师妥协!1。2亿巨星太难了,4场2球仍遭嫌弃,2大豪门互不妥协在西甲第4轮的比赛中,皇马和巴萨两强都各自拿到了3分,而马竞本轮面对皇家社会,却只是在客场收获1分,新赛季开始后,马竞状态不佳,当下只拿到2胜1平1负的战绩,已经落后了4连胜的5分又是一年杏雨村,春色无人管,独倚栏杆到黄昏随风去,又是一年杏雨村,春色无人管,独倚栏杆到黄昏。寂寥山房昼掩扉,黄昏独坐雨霏微,江村夜静无人到,零落梅花满客衣。黄昏月半轮,寂寥灯火夜归人,故园零落寒鸦啼远村。杏花村外残红不忍手游马里奥赛车巡回赛即将移除扭蛋抽奖功能手游马里奥赛车巡回赛上市三年后,任天堂终于将备受争议的扭蛋水管功能移除。在游戏中,玩家可以购买宝石,再用宝石换取扭蛋水管的发射机会,用来解锁各种奖励。如今这些奖励将改为使用全新的游6张图,道尽人生真谛。人生,就如同这6张图婚姻婚姻两个人结婚,就像两颗小树拧在一起,结出果实!老公不止是一个身份,更是一份责任老婆不止是昵称,更是一种守护。当有了孩子,婚姻便不再是两个人的事情,无论谁放北京与河北足球一体化河北三河又封了,这可苦了家住燕郊的上班族,当时在燕郊买房的人,看中的就是20分钟直达国贸以及八通线延长至河北的规划,但是,到现在,这也没有实现。但靠着这番忽悠,河北的房价确实一度借
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网