Docker食用指南(图解)

关于虚拟化

虚拟化本质上是软/硬件层的抽象

虚拟化就是由位于下层的软件模块,根据上层的软件模块的期待,抽象(虚拟)出一个虚拟的软件或硬件模块,使下层软件直接运行在这个与自己期待完全一致的虚拟环境上 所以说,像虚拟内存、Java 虚拟机、Android 模拟器这些都属于是软件虚拟化技术,而硬件虚拟化技术更多的应用就是在云计算领域。从提出至今,虚拟化技术已经出现了多种实现方式,这些不同的方式其实就是软件和硬件的不同组合

几种虚拟化

|完全虚拟化|半虚拟化|轻量级虚拟化| |--------|--------|----------| |KVM/vsphere | Xen/WINE | Docker|

Docker 的一些概念

docker 是开发者以及系统管理员用容器来进行开发,部署和运行程序的平台。使用Linux容器来部署应用就就是容器化 容器不是什么新技术,但用于部署应用倒算是。容器化这些年越发流行,主要是因为:

  • 灵活:即使是最复杂的应用也可以容器化
  • 轻量级: 容器不会独占资源,而是共享宿主的内核
  • 可交互: 你甚至可以在系统运行时进行部署和更新
  • 便携: 本地构建,发布到云上,然后到处运行

还(有一大堆的好处就不拉扯了,直接去官网看看,懒得翻译

那么问题来了

镜像Images和 容器containers

镜像运行起来就是一个容器,就像你点击一个exe程序跑起来你就得到一个进程一样。一个镜像(image)是一个包含了程序运行所需要所有资源(包括代码,运行时,库,环境,变量以及配置)的可执行包。

容器(container)是镜像的运行时实例,把镜像的东西加载到内存中,变成镜像的状态用户进程。你可以像在linux下操作一样,执行docker ps即可查看正在运行的容器

容器(Containers)和 虚拟机virtual machines

容器(container)在linux下是个本地程序 应用级别,会共享宿主的内核资源,启动单独的进程就像其他的程序一样,不会独占更多的内存,所以说他很轻量级

对比下,虚拟机完全是以一个客户机独占的模式运行在操作系统下 OS级别,它通过hypervisor虚拟途径获取主机的资源。简而言之,它比普通的程序耗费更多的资源来提供的运行环境

Docker 架构

Docker采用的是cs即client-server的架构,我们使用的时候是docker客户端通过与docker守护进程进行交互 docker守护进程,在宿主机上是一个进程,专职做一些核心工作,比如构建,运行以及发布你的一些容器。默认情况下,客户端和主守护进程是运行在同一个系统上的,当然,你可以连接到不同的远程docker守护进程上,具体如何通信?两种方式1.docker提供一套REST API,基本上所有的操作都可以可以通过REST API实现,特别时候远程调用的情况,像一些docker管理工具如portainer也是通过这种方式进行通信的,以后有空再谈谈(给自己挖了个坑)。另外一个就是通过UNIX sockets,比如平时我们在终端下敲下的命令就是通过socket的方式传送到守护进程上执行的(猜的...逃)

Docker架构图如下 Docker Architecture Diagram

Docker守护(daemon)

docker守护(dockerd)复制监听Docker API请求并管理一系列的docke对象比如镜像(image),容器(container),网络和数据卷(volume)事实上,docker守护也可和其他的守护进程间互相通信,在管理docker服务的时候可能需要这个

Docker客户端

Docker客户端 (docker)是很多用户与Docker进行交互的最主要方式了,当你在终端上输入docker run的的时候,实际上就是通过docker客户端把命令传送给本地的docker守护或者远程的docker守护,即dockerd

Docker仓库registries

Docker仓库存储着很多的Docker镜像Docker Hub和Docker Cloud就是一个公共的仓库,任何的人都可以使用,默认地,Docker会从Docker Hub进行查询镜像。当然了你也可以维护自己私人的仓库。看得出,仓库就是类似github的一个东西。实际上整个Docker是设计就是很像git 仓库是可以自己配置的,配置之后就可从中使用docker pull docker push等等管理自己的仓库内容了

更多的Docker总结

我弄了个脑图,这里上传个图片,需要xmind的联系索取 docker大全

ref

author: Hoyho 源:https://here2say.com/25 分发请联系或注明来源