Docker简介

1、什么是docker

1.1、docker 起源

开源项目
诞生2013年初
GO语言开发实现
遵从了Apache2.0协议
项目代码在GitHub维护

1.2、docker目标

docker项目目标是实现轻量级的操作解约方案。
linux容器(LXC)等技术,在LXC的基础上进行了封装,让用户不需要关心docker的管理,使得操作更为简单。

1.3 、docker三大理念

构建:不仅仅是代码构建,也可以是环境
运输:运输,可以把构建环境放到任何地方。
运行:可以在任何环境运行

一次创建,处处运行

可以做一些整体的交付(不一定是代码 交付,可以是运行环境和代码放到一起构建,可以提供运行环境和代码)

环境不变可以不用docker,看业务使用,不同业务会有不同的契合度。

通俗点解释:

就像docker的log一样,鲸鱼(操作系统)和集装箱(存放各种服务应用),我们需要把各种各样的货物放到鲸鱼身,你得为每件货物考虑,怎么安放(应用程序所需要的环境),考虑货物与货物之间是否合适(应用程序依赖环境是否冲突)。

现在我们只要把货物放入到集装箱里,就可以安全的存放,稳定,方便。

引自:https://www.zhihu.com/question/28300645

1.4docker组成部分

C/S架构

Docker Client
Docker server

注:docker服务端挂掉所有的客户端也会挂掉

1.5、docker 组件

镜像(Image):和虚拟机镜像作用完全一样,但是组成部分不同。
容器(Container):从镜像创建的一个实例,相互之间隔离的,不会像虚拟机那样隔离的彻底。可以理解为简化版的linux环境。
仓库(Repository):镜像仓库,镜像做好可以放进去,所有服务器只要可以连接到仓库,都可以直接下载,相当与yum仓库。docker自己也有一个docker hub。

1.6、docker虚拟化的不同之处

   可见容器实在操作系统层面实现虚拟化,直接复用本地主机的操作系统,而传统虚拟化方式则是在硬件层面实现的。

注:hypervisor

 Hypervisor是一种运行在物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享一套基础物理硬件,因此也可以看作是虚拟环境中的“元”操作系统,它可以协调访问服务器上的所有物理设备和虚拟机,也叫虚拟机监视器(Virtual Machine Monitor)。
Hypervisor是所有虚拟化技术的核心。非中断地支持多工作负载迁移的能力是Hypervisor的基本功能。当服务器启动并执行Hypervisor时,它会给每一台虚拟机分配适量的内存、CPU、网络和磁盘,并加载所有虚拟机的客户操作系统。

2、为什么使用docker

docker项目的发起人和Docker.Inc的CTO 认为,docker在正确的地点、时间顺应了正确的趋势即高效地构建应用,现在开发者需要能方便地创建运行在云平台的应用,也就是说应用必须能够脱离底层机器,而且同时是任何时间任何地点可获取的。因此开发者需要创建一种分布式应用程序的方式,这也是docker所能够提供的。

docker通过容器来打包应用,这样我们就可以在新的机器上启动这个容器就可以了,这无疑节约了大量的时间,并且大大降低了部署过程中的错误。并且可以支持把代码和容器打包,这样我们就可以直接启动容器做相应的测试,上线。真正做到了一次搭建,处处运行。

2.1、docker在哪几方面具有较大优势

更快的交付和部署

对于开发和运维人员来说,最希望的就是一次创建或配置,可以在任意地方运行。
开发者可以使用一个标准的镜像来构建一套开发容器,开发完成后,运维人员开一直接使用这个容器来部署代码。
docker可以快速创建容器,快速迭代应用程序,并让整个过程全程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的。
Docker很轻很快!容器启动时间是 秒级,大量地节约开发、测试、部署的时间。

更高效虚拟化

docker容器的运行不需要额外的hypervisor支持,它是内核级的虚拟化,因此可以实现更高的性能和效率。

更轻松的迁移和扩展

Docker容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另一个。

更简单的管理

使用docker,只需要小小的修改就可以替代大量更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理

2.2、docker与虚拟机的对比

虚拟机需要运行hypervisor,docker都跑在docker引擎里面,docker不是虚拟机,没有操作系统直接运行应用。

docker无法像虚拟机一样提供完全的资源隔离,甚至好多地方都没有隔离,比如用户空间,一直再填坑,体验新功能需要内核支持。


类别 Docker Openstacke/KVM
部署难度 非常简单 组件多部署复杂
启动速度 秒级 分钟级
执行性能 和物理系统几乎一致 VN会占用一些资源
镜像体积 镜像是MB级别的 虚拟机镜像是GB级别的
管理效率 管理简单 组件相互依赖,管理复杂
隔离性 隔离性高 彻底隔离
可管理性 单进程,不建议启动SSH 完整的系统管理
网络连接 比较弱 借助Neutron可以灵活组件各类网络架构

需要注意:

docker里面只能启动一个单进程,还是在前台,如果挂了docker就直接退出。
docker容器就是一个进程,挂了也就挂了,按照docker理念不需要打开ssh,不需要连接上。 容器挂了再重新启动一个。
docker 管理简单 管理简单以为操作的简单,没有办法想怎么管怎么管,在复杂的环境管理简单就不是优势了。
单进程 可以写一个脚本里面写多个进程解决,但是这有不符合docker理念,只要启动一个就好了。套件可以跑,php+nginx 可以 但是直接跑lnmp就不符合docker的理念了。

2.3、docker改变了什么

2.3.1、官方说明

1.简化配置
主要应用场景,把代码和运行环境放到一起,这样就不需要什么代码部署,直接启动容器就是一个服务。不许要环境部署和代码上线
2、代码流水线管理
开发谢代码--测试--运维上线 docker 可以避免
docker管理这个流水线,开发保存镜像,测试run起来测试,测试结束,运维run起来跑,(虚拟机太大也可以实现),一次构建到处运行
3、提高开发效率
快速配置开发环境
4、隔离应用(没有虚拟机的效率高)
5、调试能力
6、多租互环境
7、快速部署(比虚拟机快的多)

2.3.2、赵班长总结:

面向产品 :产品交付
面向开发: 简化配置环境
面向测试: 多版本测试
面向运维: 环境一致性
面向架构: 自动化扩容(微服务)

本文主要借鉴赵班长课件

  https://www.unixhot.com/

进击的docker 一 : Docker 简介的更多相关文章

  1. Docker学习—Docker简介

    什么是Docker Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目.它基于 Google 公司推出的 Go 语言实现. 项目后来加入了 Linu ...

  2. 【Docker Compose】简介与安装

    1.简介 Compose 是一个用户定义和运行多个容器的 Docker 应用程序.在 Compose 中你可以使用 YAML 文件来配置你的应用服务.然后,只需要一个简单的命令,就可以创建并启动你配置 ...

  3. (转) Docker EE/Docker CE简介与版本规划

    随着Docker的不断流行与发展,docker公司(或称为组织)也开启了商业化之路,Docker 从 17.03版本之后分为 CE(Community Edition) 和 EE(Enterprise ...

  4. docker入门——镜像简介

    什么是docker镜像 Docker镜像是由文件系统叠加而成. 最底端是一个引导文件系统,即bootfs: 这很像典型的Linux/Unix的引导文件系统.Docker用户几乎永远不会和引导文件系统有 ...

  5. Docker EE/Docker CE简介与版本规划

    随着Docker的不断流行与发展,docker公司(或称为组织)也开启了商业化之路,Docker 从 17.03版本之后分为 CE(Community Edition) 和 EE(Enterprise ...

  6. docker学习笔记-简介

    零.什么是Docker 是一个基于GO语言开发的开源 应用容器: 开发者可以打包应用和相关包,到一个 轻量级 . 可移植 的 容器 中,并且可以发布到 任何机器 ,实现 虚拟化: 完全使用 沙箱机制, ...

  7. Docker Swarm Mode简介与核心概念

    什么是Docker Swarm Docker Swarm是Docker官方的一种容器编排方案,用于管理跨主机的Docker容器,可以快速对指定服务进行水平扩展.部署.删除 一个Docker Swarm ...

  8. 「快学Docker」Docker简介、安装和Hello World实现

    前言 Docker已经成为了一门炙手可热的技术,每个程序员(特别是后端程序员)都应该学习下Docker这门技术. Docker是什么 来自官网的定义:Docker是以Docker容器为资源分割和调度的 ...

  9. 【docker】docker安装和使用

    一.docker简介: docker是容器技术的一个代表,而容器技术是将程序打包和隔离的一种技术,其实它并不是一个新技术,之前在linux内核中早已存在,真正被大众所用所了解是因为docker的出现. ...

  10. Docker 以 docker 方式运行 jenkins

    https://testerhome.com/topics/5798 Docker 以 docker 方式运行 jenkins jmcn · 2016年08月26日 · 最后由 blueshark 回 ...

随机推荐

  1. 2016HUAS_ACM暑假集训4F - 数论

    这个题目,如果没找到方向,确实有点一头雾水.但是如果你找对方向了,AC是分分钟的事.答案就是看n和m是否有除1之外的公约数. 简单证明:设n和m最大公约数不是1,假设为p.n和m总可以化为一个数乘以k ...

  2. 1月11日,HTML学习笔记

    <ul> <li>coffee</li> <li>tea</li> <li>mile</li> </ul> ...

  3. WIN7 WIN8 WIN10你们的WmiPrvSE.exe系统占用资源厉害吗?

    大家一起来做个实验吧.把你的支付宝安全控件和支付宝数字证书两个东东都卸掉.试试看电脑是否年轻几岁? 出处:百度贴吧原帖

  4. Exchange的AutoDiscover服务

    最近工作中涉及到Exchange的AutoDiscover服务,最初想学习后输出一个博客文章.但是最后是找到一篇中文博客文章已经非常清楚的解释了这个问题,如下: http://didda.blog.5 ...

  5. JDK、JRE、JVM

    首先来说一下JDKJDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK).JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Env ...

  6. python之正则表达式

    1) 用管道符号(|)匹配多个正则表达式 举例 at | home     匹配 at, home 2) 匹配任意一个单个的字符(.) 举例 f.o  匹配在"f"和"o ...

  7. 【原创】刚刚发现的SVN的几个有用的功能

    一.可看到一个文件/目录跨Branch的所有变更历程 二.SVN可自动利用Word2013的审阅功能对比docx文档

  8. 使用jQuery Autocomplete(自动完成)插件

    jQuery 的Autocomplete(自动完成.自动填充)插件有不少,但比较下来我感觉,还是bassistance.de 的比较强大,我们就来写一些代码感受一下. 最简单的Autocomplete ...

  9. Java Web 编程

    Java Web 编程 21天学通JAVA-WEB开发:http://files.cnblogs.com/files/maven-chao/Java_Web.zip

  10. [PHP] - 性能加速 - 开启opcache

    说明 PHP 5.5+版本以上的,可以使用PHP自带的opcache开启性能加速(默认是关闭的).对于PHP 5.5以下版本的,需要使用APC加速,这里不说明,可以自行上网搜索PHP APC加速的方法 ...