Why we built Docker ?

IT界中云计算革命正在如火如荼的进行着,docker 正在引领着这个潮流。 那么docker 是怎么引进来的呢? Docker的CTO在下面视频里如此清晰的回答docker 的想法和名字的来由。
Docker是用来解决软件软件的发布。思路相当的清晰,可以让我们更好的抓住docker 的本身。
 
 
Docker 尝试解决的问题: 如何使得软件的发布可靠并且迅速,也就是自动化起来? 简单的说就是在A机器运行的程序,如何让它也在B机器运行起来?  但这个不是一件容易的事情。
 
软件越来越强大,也越来越复杂。 其中模块越来越多,其之间的依赖也越来越复杂。此外不同的技术栈,也需要不同的运行环境。
此外运行环境基础设施也有多种,物理界,虚拟机,不同配置环境的机器。如下图。
 
 
 
面对如此复杂的矩阵,如何解决在A机器可以运行在B机器运行不起来的故事呢?
debug,这是在生活中那是多么tough的一件事。
我们呼唤标准环境,所谓的inforstracuture as a Code.但是需要多大的努力才能得到这样的环境。 开发环境统一,测试环境的统一,最终的部署环境统一。 如果部署的环境是客户机器,难道需要客户也做一个标准环境? 那是多么不容易的一件事呢?
作者看到问题本质,但是给出了更加优雅通用的方法。这个方法就是借鉴来自于运输业的集装箱。

 
运输行业也面对这样的问题,货物的种类和运输的基础设施多样性的复杂矩阵问题。
 
 
解决方案是:标准化。 集装箱! 然后基于集装箱,自动化。
 
 
 
软件发布也可以做到标准化,将软件放到一个盒子里面,然后将其标准化。这就软件里面的docker.
 
 
这就是Docker,将软件封装到容器,形成标准化与基础环境完全隔离。
 
这样开发,复杂将软件打包。
 
云提供商,复杂运行docker的容器。好了到此为止,容器里面与外面运行环境彻底解耦了。 软件开发与软件运维这个时候可以完全不需要解耦了。
 
或许不久的未来,软件的发布方式就是docker,将软件本身和其依赖库打包到里面; 开箱就可用。
 
 

 
云时代到了,docker自然就去占领云运行环境。   云分三层( Infrastructure As  a service, Platform as a Service, Software as a Service), docker自然而然的去替代中间那一层。 也就是 Container as a Service.
 
所以各大云服务提供商,比如 amazon, Microsoft, google,阿里云,都对于Docker 报有更大的兴趣。  很快各个提供商都提供容器服务。
 
另外软件本身的功能越来越强大,其模块数量增多; 为服务架构的广泛接受,对于各种技术栈的应用,使得部署过程复杂化; 同时持续发布,使得部署的频率更高; 这些带来的发布的复杂度, docker 天然可以用来减轻这些复杂度。
 
 
Docker 真是在正确的时间做了正确的事。

记录视频“ Why I build Docker"的更多相关文章

  1. 《原创视频》牛腩学docker简记

    牛腩学docker简记 http://blog.niunan.net/blog/show/1258https://www.cnblogs.com/niunan/p/10917506.htmlhttps ...

  2. gradle build docker image

    前言:其实gradle-docker插件干的事和我们手动制作镜像是一样的,只不过它封装了一些步骤而已. eg:如果我们要将项目打包成镜像,首先我们要写Dockerfile,这是制作镜像的不可或缺的第一 ...

  3. .net core build docker image

    1.创建.net core web项目 2.添加Dockerfile文件 # 基于microsoft/dotnet:2.1-aspnetcore-runtime构建Docker Image FROM ...

  4. [转]完整记录在 windows7 下使用 docker 的过程

    本文转自:https://www.jianshu.com/p/d809971b1fc1 借助 docker 可以不在开发电脑中安装环境,比如 nodejs,记录下如何实现. 下载安装 根据自己的电脑系 ...

  5. 【记录】centOS 搭建logstash +docker搭建elasticsearch伪集群+kibana链接集群elasticsearch节点

    [注意]本文主要用于自我记录,注释较少. 安装logstash 1.上传logstash-6.4.3.tar.gz到服务中 2.tar –zxvf logstash-6.4.3.tar.gz 3.cd ...

  6. 记录线上与本地docker镜像一致,但Dockerfile却构建失败的问题

    背景 公司新开了某个项目,我在新的服务器部署了docker环境,本着ctrl+c 和ctrl+v的惯例,直接把以前的php环境的Dockerfile文件直接复制到新项目服务器那里,结果构建失败,失败的 ...

  7. build docker deivcemapper

    1.创建一个虚拟快设备 dd if=/dev/zero of=4G.img bs=1M count=4096 2.创建loop device 可以先用losetup -f 查看空闲的loop设备 lo ...

  8. 记录Ubuntu 16.04 安装Docker CE

    一.Docker的两个版本 Docker有两个版本: 社区版(CE) 企业版(EE) Docker Community Edition(CE)非常适合希望开始使用Docker并尝试使用基于容器的应用程 ...

  9. docker 安装 MySQL 8,并减少内存占用 记录

    目前vps 1cpu 512m内存 MySQL内存占用77% ,约350m ,经过修改配置文件优化后如下 $ ps aux 进入docker bash $ docker exec -it pwc-my ...

随机推荐

  1. SQL Server Reporting Services (SSRS): Reporting Services in SQL Server 2012 (codename "Denali") will support XLSX, DOCX formats. Bye bye 65536 rows limit in XLS files ;)

    当SSRS报表的时候,若相应EXCEL是2003以下,在行数超过65536的时候报表会报错 "Microsoft.ReportingServices.ReportProcessing.Han ...

  2. 代码管理——如何连接Git Server,下载代码

    最近一个项目需要与国外团队合作,而他们的代码在GitLab上,需要使用Git工具连接服务器,对于我这样一个SVN的拥护者,当然很高兴去接受这个工作了(鄙视一下目前单位还使用ClearCase). 但操 ...

  3. Maximo-删除应用程序

    执行如下SQL: delete from maxapps where app='<APPLICATION NAME>';delete from maxpresentation where  ...

  4. 关于C#的委托(delegate)的自我理解

    首先描述一个事情,一个老师饿了,他要去买东西填饱肚子,然后他发现他的学生“小李”在玩,没学习,于是就委托“小李”去帮他买吃的. 根据这件事我们来分析: 首先得有个老师(老师饿了是他的方法,老师买东西也 ...

  5. java 在linux环境下写入 syslog 问题研究

    1.Syslog 在Unix类操作系统上,syslog广泛应用于系统日志.syslog日志消息既可以记录在本地文件中,也可以通过网络发送到接收syslog的服务器.接收syslog的服务器可以对多个设 ...

  6. java封装学习

    封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问.把过程和数据包围起来,对数据的访问只能通过已定义的接口. 在java中通过关键字priva ...

  7. TortoiseGit 图标不显示

    1. 确认注册表:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdent ...

  8. python猜数脚本(电脑猜测)(二分法)

    # coding=utf-8# 猜数# 记录猜数的过程import randomcom_result=[]  #存放电脑结果,数组com_count=0 #存放电脑猜测次数ran=random.ran ...

  9. 代理服务器(Proxy)原理

    17.1 什么是代理服务器(Proxy)   以类似代理人的身份去取得用户所需要的数据就是了! 但是由于它的『代理』能力,使得我们可以透过代理服务器来达成防火墙功能与用户浏览数据的分析!   此外,也 ...

  10. 如何写一个简单的shell

    如何写一个简单的shell 看完<UNIX环境高级编程>后我就一直想写一个简单的shell来作为练习,因为有事断断续续的写了好几个月,如今写了差不多来总结一下. 源代码放在了Github: ...