Docker是一种虚拟化技术

      刚開始看Docker,感觉非常抽象“An open platform for distributed applications for developers and sysadmins”这是Docker的标语。

“一个服务于分布式系统的开发人员和运维人员的开放平台”。不是非常好理解,直到文档中不断地和虚拟机做对照,才理解到它可能是和虚拟机相关的技术。Docker是LXC容器技术的典型代表,LXC技术能够实如今同一主机执行多个隔离的linux系统,通过linux内核功能实现轻量级的虚拟机。Docker技术尽管是虚拟化技术,却差点儿不消耗除容器中的应用程序外的其它资源,能够达到近乎裸机的执行能力,达到秒级/微秒级的部署。一台实体机能够执行几百甚至上千个docker容器。并且有非常高的移植性,能够在不论什么平台执行(包括物理机、虚拟机、云平台)。

普通虚拟机和Docker 容器的差别

每个虚拟机不仅包括程序、程序须要的包。并且还包括了一个操作系统,可是Docker容器是共享一个操作系统内核(kernel)的,这些容器通过命名空间相互独立,执行起来就像是在宿主机上的一个孤立的线程。并且他们的执行地点非常的多样化,不论什么设备都能够。

Docker的基本架构

Docker解决的问题

图中白色部分即为Docker

Build :docker同意开发人员把非常多微小的服务组装成一个应用。不用操心生产环境和开发环境因为环境问题而产生的问题。并且不用操心不论什么平台或者不论什么语言带来的困扰。

Ship(Docker Hub) : Docker能够让你用一个统一的用户接口设计从开发、測试到分发的一整套流程。
Run(Docker Cloud):Docker提供了帮你在多种平台安全、可靠的部署高可扩展的服务的能力。

Docker的结构

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

Docker也是用的C/S的架构。由Docker client向Docker daemon发消息,告诉Docker  须要做什么。Client和daemon能够在同一个操作系统下。也能够在远程。

两者联系的方式是:socket或者是RESTful API。

Docker daemon:docker daemon执行在宿主机上。用户不能直接操作daemon,仅仅能通过docker client转达。
Docker client:将用户的指令转发给Docker daemon,并接收Docker daemon返回的信息,展示给用户。

Docker images:Docker 镜像是一个仅仅读的魔板。比如:一个镜像能包括Ubuntu、Apache和你的应用。镜像被用于创建Docker容器,Docker提供了简单的方式去创建或者构建镜像。你也能够下载别人已经创建好的镜像。
Docker containers:Docker containers 有点像一个文件夹。

一个Docker容器包括了一个应用执行所须要的一切,每个容器都是由Docker镜像创建的,Docker 容器能够run、started、stopped、moved、或者deleted。

每个容器都是相互独立的。

Docker registries:Docker registries挂载了非常多镜像。有公共或者私有的仓库,让你去更新或者下载镜像。这些公共的Docker registry能够被Docker Hub提供。Docker Hub提供了非常多的镜像供你使用,你能够用这些镜像来创建自己的镜像或者直接使用。
Docker 工作流程:1、build 自己的Docker镜像  2、用自己创建的镜像创建容器  3、通过Docker Hub或者自己搭建的registry分享这些镜像

Docker组件

Docker Engine:提供了docker 创建镜像和执行容器等的核心方法。
Docker Hub:相似于gitHub的东西,只是上面是docker 镜像
Docker Machine :在云端或者其它网络环境中的Docker主机。
Docker Compose:用于定义多容器的应用。相当于省去了Docker container容器启动时输入的參数,让多种容器之间的关系更加清晰。构建多个容器更加方便。
Docker Toolbox:在Mac和Windows安装上的Docker安装程序,正常大家安装的Docker就是它,整合了全部的Docker 组件和工具。比如:Engine、Machine、Compose 还有Kitematic(可视化工具)。

Docker Trusted Registry;创建私有的专用的镜像仓库。
Docker Registry:创建开源的镜像仓库。

Docker Swarm:和Docker Machine一起配合做Docker集群相关的工作。

最新文章

  1. 前端MVC学习总结(一)——MVC概要与angular概要、模板与数据绑定
  2. Dokuwiki布署小记
  3. 【译】什么导致了Context泄露:Handler&内部类
  4. java 基础第一季
  5. Spark SQL External Data Sources JDBC官方实现写测试
  6. AccessHelper
  7. web应用配置
  8. Linux常用命令_(系统管理)
  9. Find them, Catch them
  10. VC 6.0 LNK2005 错误 处理
  11. Vue表单控件绑定
  12. iOS关闭键盘的两种简单方法
  13. arcgis 获得工具箱工具的个数
  14. python - 基础知识,if语句
  15. JUnit报错 java.lang.Exception:No tests found matching
  16. HDU4185(KB10-G 二分图最大匹配)
  17. WPF 中定时器的使用
  18. C#解除文件锁定
  19. Docker技术:在微软云Azure上使用K8S
  20. [转]C# 关闭嵌在程序中的word进程而不关闭用户通过word手动打开的word进程

热门文章

  1. 关于MFC控件删除出现“具有该ID的控件已存在”这样的情况的解决方案,详细,网上都没有这么详细的,我是“深受其害”,所以想将详细的方法分享出去。
  2. 工具分享2:Python 3.6.4、文本编辑器EditPlus、文本编辑器Geany
  3. dom转换成jquery对象
  4. Jquery中绑定事件的异同
  5. 仿QQ空间长图效果简易版--母亲节感恩
  6. android黑科技系列——爆破一款应用的签名验证问题
  7. 搭建Hive所遇到的坑
  8. sphinx在windows下的简单安装与使用
  9. java JDBC连接 Sqlserver 非默认的实例名问题
  10. Java基础学习笔记三 正则表达式和校验、Date、DateFormat、Calendar