美文网首页
第一章 初识Docker

第一章 初识Docker

作者: 箫起秦楼 | 来源:发表于2018-11-23 20:21 被阅读0次

一、Docker 简介

  • Docker是2013年docker公司基于go语言编写的开源的应用容器引擎,并且是一个开源的pass服务(Platform as a Service,平台即服务的缩写)。
  • docker公司最早叫dotCloud后由于Docker开源后大受欢迎就将公司改名为 Docker Inc,总部位于美国加州的旧金山。
  • Docker 运行在Linux系统之上,基于C/S架构,使用远程API来管理和创建Docker容器,其可以轻松的创建一个轻量级的、可移植的、自给自足的容器。
  • Docker 可以让开发者打包他们的应用以及依赖包到一个可移植的容器中,然后发布到运行Linux的机器上。
  • Docker 容器技术是完全使用沙箱机制,相互之间不会有任何接口。
  • Docker目前分为两个版本:
    • 社区版本(Community Edition, CE)
    • 企业版本(Enterprise Edition, EE)

二、特别之处

Docker在虚拟化的执行环境中增加了一个应用程序部署引擎。该引擎的目标就是提供一个轻量、快速的环境,能够运行开发者的程序,并方便高效地将程序从开发者的笔记本部署到测试环境,然后再部署到生产环境。Docker极其简洁,它所需的全部环境只是一台安装了Linux的宿主机器。

三、Docker与LXC的关系

  • Docker是基于linux 内核功能实现。
  • LXC(LinuX Container的简写)是Linux内核原生支持的容器技术,可以提供基于容器技术的虚拟化。
  • Docker最早采用LXC技术,提供 LXC 的高级封装,发展标准的配置方法。

四、Docker容器主要依托于Linux内核的三种功能

  • kernel namespaces 内核名称空间
    • 主要的六个名称空间:
      • Mount,PID,Network,IPC,UTS,User
      • 六个名称空间可以实现内核输出给用户空间的基础特性的隔离,不能实现计算资源的配额。
  • CGoups 控制组
    • CUP,Memroy(内存),BLKIO(块设备的IO),...
    • 将有限的资源分配多个不同的用户空间(容器)。
  • Kernel Capabilities 内核能力
    • 实现容器安全的非常重要的属性。

五、Docker 三个核心组件

Docker 架构图:


3091267295.jpg

5.1 Docker Client(客户端)

  • Docker client只需向服务器或守护进程发出请求,服务器或守护进程将完成所有工作并返回结果。

5.2 Docker daemon(Docker引擎)

Docker 引擎组件图:


2793287560.png
  • Docker daemon(daemon直译为守护进程)也称作Docker引擎。
  • Docker daemon与docker registry之间的通讯协议是:https协议
  • docker daemon 只认https服务的registry(安全的registry)。
  • docker client与docker daemon默认只能运行在同一台主机上。
  • 可以通过配置,让daemon监听一个端口,而实现client运行在另一台主机上。
  • Docker daemon侦听客户端的请求并管理Docker objects(Doceker对象)。
    • Docker objects:images(镜像),containers(容器),networks(网络)和volumes(存储卷)、Plugin(插件)。

5.2.1 images(镜像)

  • 镜像是创建docker容器的基础,用户基于镜像来构建自己的容器。
  • 镜像也是Docker生命周期中的“构建”部分。
  • 镜像是基于联合文件系统的一种层式结构,由一系列指令一步步构建出来。
  • 镜像自身是只读文件,Docker基于镜像启动容器的时候,会在镜像的最上层创建一个可写层,以后所有的操作都是在镜像的上一层(可写成)进行。
  • 所以镜像的存储必须要求本地使用特定的文件系统,才能基于镜像启动容器:
    • 高级联合文件挂载系统:aufs
    • 叠加文件系统:overlayfs、overlayfs2
  • 基于一个镜像可以同时启动多个容器。

5.2.2 containers(容器)

  • 容器类似于一个轻量级的沙箱,docker利用容器来运行和隔离应用。
  • 用户构建和部署容器,只需要把自己的应用程序或服务打包放进容器即可。
  • 容器是基于镜像启动起来的,容器中可以运行一个或多个进程。
  • 容器是从镜像创建的应用运行实例,他可以启动、开始、停止、删除、而这些容器都是彼此相互隔离、互不可见的。
  • 可以认为镜像是Docker生命周期中的构建和打包阶段,而容器则是启动或执行阶段。

5.3 Docker Registry(仓库)

  • Registry可以看做是用来保存用户所构建镜像的仓库。
  • Registry分为公共和私有两种。
  • Docker公司运营的公共Registry叫做Docker Hub,官网:https://hub.docker.com
  • 用户可以在 DockerHub上注册账号,分享并保存自己的镜像。
  • 国内强烈推荐使用阿里云的Docker镜像Registry,可自行注册阿里云账号开通docker服务。
  • 阿里云Registry网址:
  • 如非要使用Docker官网的镜像仓库服务,可以使用Docker加速器。

六、Docker能做什么

  1. 加速本地开发和构建流程,使其更加高效、更加轻量化。本地开发人员可以构建、运行并分享Docker容器。容器可以在开发环境中构建,然后轻松地提交到测试环境中,并最终进入生产环境。
  2. 能够让独立服务或应用程序在不同的环境中,得到相同的运行结果。这一点在面向服务的架构和重度依赖微服务的部署中尤其适用。
  3. 用Docker创建隔离的环境来进行测试,例如,用Jenkins这样的持续集成工具启动一个用于测试的容器。
  4. Docker可以让开发者先在本机上构建一个复杂的程序或架构来进行测试,而不是开始就在生产环境部署、测试。
  5. 构建一个多用户的平台即服务(PASS)基础设施。
  6. 为开发和测试提供一个轻量级的独立沙箱环境。
  7. 提供软件即服务(SAAS)应用程序,这里指的是将软件及运行环境整体打包方便交付和实施。
  8. 高性能、超大规模的宿主机部署。
尊重原创,允许参考修改,转载请注明原文地址。

第一章 初识Docker | 点击此处
第二章 安装Docker以及简单配置 | 点击此处
第三章 Docker容器的生命周期 | 点击此处
第四章 Docker命令汇总 | 点击此处
第五章 Docker基础命令详解 | 点击此处
第六章 Docker---镜像的命令详解 | 点击此处
第七章 Docker---容器的命令详解 | 点击此处
第八章 Docker与Alpine不解之缘 | 点击此处
未完待续

相关文章

网友评论

      本文标题:第一章 初识Docker

      本文链接:https://www.haomeiwen.com/subject/ncssqqtx.html