0%

Docker简介

Docker简介

Docker是一个轻量级容器技术,是直接运行在操作系统之上的,而不是运行在虚拟机中,通过namespace实现了虚拟机技术的资源隔离,通过cgroup实现资源限制,通过写时复制实现了高效的文件操作

Docker支持将软件编译成一个镜像,在这个镜像里做好对软件的各种配置,然后进行发布,使用者可以运行这个镜像,运行中的镜像就被称之为容器

运维人员可以直接使用这个镜像,将其发布到任何装有Docker的机器上,可以有效地解决微服务架构下服务粒度细、服务数量多所导致的开发环境搭建、部署以及运维成本高的问题

cgroup

cgroup全称是control group,即控制组,cgroup的api以一个伪文件系统的实现方式,用户进程可以通过文件系统实现cgroup的组件管理;cgroup的组件管理操作单元可以细粒度到线程级别,另外用户可以创建和销毁cgroup,从而实现资源分配和再利用;所有资源管理的功能都以子系统的方式实现,接口统一子任务创建之初与其父任务处于同一个cgroup的控制组

实现的功能:

  • 资源限制:可以对任务使用的资源总额进行限制
  • 优先级分配:通过分配的cpu时间片数量以及磁盘io带宽大小,相当于控制了任务运行优先级
  • 资源统计:可以统计系统的资源使用量,如cpu时长等
  • 任务控制:cgroup可以对任务执行挂起、恢复等操作

Docker组成

docker

Docker引擎Docker Engine

Docker引擎可以理解为一个运行在服务器上的后台进程,本质上是一个服务,只要启动该服务,就可以随时使用,可通过Docker命令与Docker引擎进行通信

Docker客户端Docker Client

Docker客户端分为命令客户端和Rest Api客户端

Docker镜像Docker Images

Docker镜像就类似于光盘,只需获取Docker镜像,就能将其载入到Docker引擎中,并运行Docker镜像中的程序,一般首先需要将程序打包到Docker镜像中,就可以将Docker镜像交给别人使用

通过镜像启动一个容器,一个镜像就是一个可执行的包,其中包括运行应用程序所需要的所有内容包括代码、库、环境变量、配置文件等

Docker容器Docker Containers

运行该Docker镜像便会启动一个Docker容器,该容器中将运行镜像中封装的程序,在一个Docker镜像上理论上可以运行多个Docker容器,每个容器都是相互隔离的

容器是镜像的运行实例,当被运行时有镜像状态和用户进程,可以使用docker ps查看

Docker镜像注册中心Docker Registry

Docker官方提供了一个叫做Docker Hub的镜像注册中心,用于存放公开和私有的Docker镜像仓库,可通过Docker Hub拉取Docker镜像

Docker Hub地址

最核心的两个部分,一个是镜像Images,一个是容器Containers。镜像运行起来就是容器。容器运行的过程中,基于原始镜像做了改变,比如安装了程序,添加了文件,也可以提交回去(commit)成为镜像

特点

Docker是通过在底层封装了Linux容器技术来实现的,其可以快速运行、节省资源、便于交付、容器管理

  • 文件系统隔离,每个容器都存放在独立的文件系统中
  • 资源隔离,每个容器都有自己独立的ip、网络和端口
  • 日志记录,docker会收集和记录每个进程容器的标准流,用于实时检索

欢迎关注我的其它发布渠道