这篇文章的知识点包括:码头工人镜像的安装下载,码头工人镜像分层以及码头工人镜像的缓存特性,阅读完整文相信大家对有了一定的认识。
<强>下载镜像(dockerfile的组成)强>
码头工人拉hello world
基地镜像
(基础镜像)
<代码>比;* * *个人理解: 比;用户空间:rootfs 比;内核空间:bootfs 比;内核内核 比;总体有七个部分: 比;libcontainer客户机码头工人,码头工人守护进程,司机, 比;码头工人容器,图表,码头工人注册表 比; 比;码头工人是一个C/S的架构,用户可以在客户端输入各种指令,客户端负责接受请求并作出相应的响应返回给客户。 比;DockerClient 比;DockerClient负责接受并传递请求指令。 比;DockerDaemon 比;后台运行(不占用程序与端口) 比;DockerDaemon的功能主要有两个:(是一个守护进程) 比;1 .负责接受客户的请求2。管理码头工人容器 比;dockerdaemon的架构主要可以分为两部分:dockerserver和引擎 比;DockerServer作为服务端最主要的作用就是配合客户端将请求指令接受过来,如图所示,DockerServer主要分为三个部分:Http.server, routermux.server,处理程序 比;DockerServer运行时会从一个名为mux的包中创建一个mux。路由器路由器,然后为路由器中添加相关的路由项用于路由信息,每个路由项由HTTP请求方法(get、post、put、delete) + URL +处理程序三部分组成。 比;DockerServer每收到一个请求就会生成一个goroutine然后进行相应的解析,匹配相应的路由项最后会找到相匹配的处理程序来处理,处理程序处理玩请求之后给DockerClient返回响应 比;2.引擎 比;引擎是码头工人中的运行引擎,存储着大量的容器信息并管理着大部分工作的执行。 比; 比;工作是码头工人中的最小执行单元,类似于unix中的进程,也会有相应的名字,参数,环境变量,标准输入输出,返回状态等等.docker每进行一次相应的操作都会生成一个相应的工作,比如创建一个容器,下载一个文件等等都是由工作完成的。 比;DockerDriver 比;DockerDriver是码头工人内部的驱动模块,负责容器内部相关网络,文件系统等的构建 比; 比;libcontainer 比;libcontainer主要是对linux内核的一些诸如名称空间,并且,能力等特性做了封装 比; 比;图 比;DockerRegistry(私有仓库) 比;码头工人容器:运行应用程序的特定容器,是容器服务的交付实体* * * * *总结:文档网(上) 码头工人核心概念 Arunachal Pradesh, 容器技术的核心概念有容器(容器),镜像(图片),仓库(注册中心)三个。 容器:具体的运行应用程序的一个进程,它里面包含应用程序的各种依赖。 镜像:创建容器的模板,根据不同配置的镜像来创建不同的容器使用。镜像和容器的关系可以理解为面向对象中类和实例对象的关系。 仓库:一个镜像只可以创建一种类型的容器,镜像多了就需要放到镜像仓库中存起来,仓库有本地镜像仓库和公共镜像仓库,平时使用本地仓库的镜像,没有的话去注册中心公共镜像仓库下载。 码头工人架构 码头工人框架主要由客户机码头工人,码头工人守护进程,码头工人注册中心,司机,集装箱码头工人五个模块组成,另外还有图和Libcontainer两个辅助模块,如下图所示: 码头工人架构 码头工人客户:用户通过码头工人端与码头工人守护进程进行通信,利用命令行发送创建镜像,运行容器之类的请求。 码头工人守护进程:码头工人守护进程是码头工人架构中一个常驻在后台的系统进程,接受并处理码头工人客户发送的请求。该守护进程在后台启动了一个服务器,服务器负责接受码头工人客户发送的请求,然后通过路由与分发调度,找到相应的处理程序来执行请求。 码头工人注册表:存储容器镜像的仓库。 司机:司机是码头工人架构中的驱动模块。通过司机驱动,码头工人可以实现对码头工人容器执行环境的定制。包含管理容器镜像的graphdriver驱动,配置容器内网络环境的networkdriver驱动,execdriver用来创建和维护容器。 码头工人容器:运行应用程序的特定容器,是容器服务的交付实体。 一般运行流程为:用户在码头工人客户端通过命令行发送请求到码头工人守护进程,码头工人守护进程中服务器收的到请求后,引擎会创建一个工作任务工作,通过调用驱动模块的各个驱动分别执行不同的任务,比如需要镜像就调用graphdriver从镜像仓库下载镜像,创建容器时也需要调用其它两个驱动来配置网络和创建并维护容器。最后生成运行中的容器或者上传镜像到镜像仓库等。 容器应用 当想使用容器来跑自己的应用程序时,首先需要明确应用程序依赖的环境,如果本地有现成镜像可以直接使用来运行容器跑应用,没有的话可以通过码头工人去注册中心下拉载,或者自己创建所需要的镜像。 可以使用dockerfile来创建镜像,首先编辑一个dockerfile文件,其中 从表示这个镜像是基于哪个镜像来建立 维护人员表示这个镜像是由谁来维护 运行告诉镜像要执行的操作,比如更新或安装一个软件等,会新建一个镜像层。 公开表示暴露的端口。 ENV表示配置环境变量 CMD设置容器启动后默认执行的命令及其参数,这条命令会在容器启动而且码头工人跑没有指定其它命令时运行,如果码头工人运行指定了其它命令,CMD指定的默认命令将被忽略。 CMD有三种格式: Exec格式:CMD(“可执行”、“param1”、“param2”) CMD (“param1”、“param2”)一般使用这个,为入口点提供默,,,,,,,,,,,,认参数 壳牌格式:param1 param2 CMD命令 入口点配置容器启动时运行的命令。与CMD不同的是,入口点的指令一定会被运行,即使运行码头工人运行时指定了其它命令。 ,,,,,,入口点有两种格式: Exec格式:入口点(“可执行”、“param1”、“param2”) param1 param2壳格式:入口点命令 一般优先使用Exec格式的入口点指令.CMD可为入口点提供额外的默认参数,同时可利用码头工人运行命令行替换默认参数。 常用命令 码头工人建立创建镜像 码头工人run 利用镜像运行容器 码头工人形象关于镜像的一系列操作 码头工人pull 从镜像仓库下载镜像到本地仓库 码头工人push 上传镜像到镜像仓库 码头工人容器执行关于容器的一系列操作 码头工人统计实时监控该节点容器的资源使用情况码头工人镜像的使用