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集群相关的工作。

Docker入门介绍的更多相关文章

  1. 学习Mysql过程中拓展的其他技术栈:Docker入门介绍

    一.Docker的介绍和安装 1. Docker是什么 百度百科的介绍: Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linu ...

  2. Docker入门-介绍和安装

    Docker容器 Docker是什么 Docker最初是dotCloud公司创建人Solomon Hykes在法国期间发起的一个公司内部项目,它是基于dotCloud公司多年云服务技术的一次革新,并于 ...

  3. Docker 入门介绍

    Docker是什么 从发布到现在 docker一直很受关注,在一定程度是改变了软件行业 如果你还不知道 docker 是什么是不是有点out了,接下来我们来介绍docker是什么,解决了什么问题,好处 ...

  4. Docker入门教程(一)介绍

    http://dockone.io/article/101 Docker入门教程(一)介绍 [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第一篇,介绍了 ...

  5. Docker入门教程(九)10个镜像相关的API

    Docker入门教程(九)10个镜像相关的API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第九篇,重点介绍了镜像相关的Docker Remote ...

  6. Docker入门教程(八)Docker Remote API

    Docker入门教程(八)Docker Remote API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第八篇,重点介绍了Docker Remote ...

  7. Docker入门教程(七)Docker API

    Docker入门教程(七)Docker API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第七篇,重点介绍了Docker Registry API和 ...

  8. Docker入门教程(六)另外的15个Docker命令

    Docker入门教程(六)另外的15个Docker命令 [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第六篇,继续介绍Docker命令.之前的第二篇文章 ...

  9. Docker入门教程(五)Docker安全

    Docker入门教程(五)Docker安全 [编者的话]DockOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第五篇,介绍了Docker的安全问题,依然是老话重谈,入门者可以通 ...

随机推荐

  1. Pie(二分)

    http://poj.org/problem?id=3122 题意:将n个圆柱体的不同口味的pie分给m个人,要求每个人分得的pie必须体积相同,且来自于一块pie(即:只分得一种口味的pie),求最 ...

  2. Django day14(二) Session

     Session 1. Session干什么用的? 解决cookie不安全的问题, 2. 原理是: 1) 存在服务器上的键值对{'sdaf随机字符串':{name:prince,pwd:123}} 2 ...

  3. Django基础必备三件套: HttpResponse render redirect

    1. HttpResponse :  它的作用是内部传入一个字符串参数, 然后发给浏览器 def index(request): return HttpResponse('ok') 2. render ...

  4. iOS 点击事件传递及响应

    1.iOS中的事件 iOS中的事件可以分为3大类型: 触摸事件 加速计事件 远程控制事件这里我们只讨论iOS中的触摸事件. 1.1响应者对象(UIResponder) 在iOS中不是任何对象都能处理事 ...

  5. C - Alice, Bob and Chocolate(贪心)

    Problem description Alice and Bob like games. And now they are ready to start a new game. They have ...

  6. Spring + Redis ( 简单使用)

    1.Redis 的 Java API Java 中 使用 Redis 工具,要先去 maven 仓库中,下载 jedis jar包 jedis 依赖 <dependency> <gr ...

  7. Xcode控制台输出中文

    创建一个.m文件,然后将一下代码加入.m文件中即可实现控制台输出中文,具体代码如下: #ifndef Release @implementation NSSet(Log) - (NSString *) ...

  8. Java基础12一IO流

    1.IO流的原理 利用数据通道实现程序和数据源之间数据的的读写操作.  2.IO流分类 输入流.输出流.字节流.字符流.节点流.过滤流  3.InputStream 字节输入流 实现类FileInpu ...

  9. Android 概览屏幕

    文章照搬过来的:原文地址https://developer.android.google.cn/guide/components/recents.html 概览屏幕(也称为最新动态屏幕.最近任务列表或 ...

  10. SQL中EXTRACT() 函数

    EXTRACT()("提取"的意思) 函数用于返回日期/时间的单独部分,比如年.月.日.小时.分钟等等. 就是返回出来具体的年,月,日 2008-12-29 16:25:46.63 ...