Docker初步介绍

什么是docker?

        docker是一个由许多服务组成的程序,它提供了在几乎任何平台上开发,打包,交付,运行应用程序的一致方式。学习docker就是学习这些若干服务的知识,我们后续会详细讨论。

        对于很多开发者而言,尝尝遇到这样一个困惑,这个程序或者代码在小王的本机上运行没有问题,但是在小刘的机器上怎么跑也跑不起来,所以为了在小刘的机器上能够运行,小王挥汗如雨,搞了一下午,发现是运行环境XXX地方配置不一致。这个时候,docker出来了,它大胆的宣布:只要你使用docker,只要你的程序或者代码能够在小王那里运行,那么一定在小刘那里也可以运行。也就是说,docker为我们屏蔽了很多运行环境的细节。

        docker是一个管理你的机器的基础设施的运行平台。Docker提供了一种在DAPT环境中打包,交付,测试和运行应用程序的一致方式。

        怎么理解这句话呢?

        啥是DAPT?(Development, Testing, Acceptance, and Production)

        说人话就是,你将你的应用程序打包成docker的镜像。然后在开发,测试,生产环境中运行相同的镜像。这样做会节省很多在各种环境中配置和安装应用的时间。

docker是怎么诞生的?

       docker的诞生在网络上有很多资源,有兴趣的可以百度或者google搜索了解。在这里笔者只想说一句,从docker的诞生过程,可以证明一句很朴素的格言:创新永远是诞生奇迹的地方,如果你的创新还能给人带来舒适感和幸福感,哈哈,说不定你的这个创新离奇迹不远啦。

为什么docker如此风靡?

        docker如此受欢迎,我思考的关键是:

  •         docker帮我们解决了什么问题?
  •         以前这些问题又是如何解决的?
  •         它们的解决方案存在哪些痛点?

docker帮我们轻松了开发,测试,发布和部署过程,以前这些在虚拟机上弄是一个很痛苦的过程,同时docker也帮我们节省了资源。为了说明这个问题,我用两幅图和一些说明来作比较:

Virtual Machine

  • Hypervisors are used to manage Virtual machines
  • A full copy of Guest OS is installed on top of the Host machine. These Guest os can be of few Gbs, where the hosted app is just of few Mbs.
  • Heavyweight as explained above
  • Difficult to monitor and time taking
Docker

Docker

  • Docker engine takes care of running the image in an isolated runtime, docker container.
  • The application only needs to be packed with its dependencies libraries.
  • Much lightweight than Virtual Machines, and powerful at the same time
  • Easy to manage, spinning up a container is just a matter of few commands and a few seconds.

大伙看到了吧,真的是一图胜千言,不要在意我在这里瞎说,大伙重点是理解这两幅图,并在以后的学习中不断提醒自己,docker的这个命令有没有跟这两幅图关联的部分,如果有的话,它属于哪一部分呢?因为这是对docker的入门理解,所以在这里不详细说明这两幅图,在以后的命令使用中,我们会慢慢理解。

为什么要使用docker?

有效的使用系统资源

        docker容器不需要额外的虚拟化层,却是一个完整的客户操作系统。因此比传统的虚拟化技术能更好的利用资源。

更快的启动时间

        容器化的应用程序只需要几秒钟,甚至几毫秒启动,因为它们直接运行在主机内核上。

一致的操作系统环境

        docker镜像确保除了应用程序之外完整了运行时环境。这使得它可以在任何操作系统上运行。

持续的交付和部署

        DevOps 想要从任何地方配置,Docker 允许您自定义 CI(持续集成)、CD(持续交付)和部署的镜像。

无痛迁移和维护

        Docker 确保一致性,从而使从系统到系统的迁移变得简单。

版权声明:著作权归作者所有。

相关推荐

JPA Hibernate 快速入门

为了学习JPA的实体状态的转化,我们先搭建一个通过JPA Hibernate存储实体到数据库的Demo,后续的学习都在此demo基础上展开。添加Hibernate依赖 <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager&l

初识JPA

1、什么是JPA?        JPA的全称是Java Persistence API,翻译成中文就是java对象持久化应用程序接口。JPA是Sun公司在Java EE5中提出的java对象持久化应用程序接口。2、JPA的优势是什么?标准化对容器级特性支持简单易用,集成方便可媲美JDBC的查询能力支持面向对象的高级特性3、JPA的缺点是什么?性能不好?学习

Tomcat 8.5新安装环境初步配置优化

下载安装Tomcatwget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v8.5.37/bin/apache-tomcat-8.5.37.tar.gztar zxf apache-tomcat-8.5.37.tar.gz -C /usr/localmv /usr/local/apache-tomcat-8.5.37 /usr/local/t

初识parcel

webpack是一个很好的web应用打包工具,但是使用webpack需要很多繁琐的配置。parcel则提供了一个零配置的方案,大大简化了使用web应用的工具的难度。Parcel特性Parcel有以下一些特性:1、相比于Webpack, Rollup以及Browserify,Parcel打包时间极快这是Parcel做的一个基准测试,基于一个合理大小的应用,包含1726个模块, 6

[译]Java 9:一步步迁移项目到Jigsaw(模块化)

Java 9出来了。 我们来试试一个简单的Spring项目。 为了使练习更具挑战性,我们还要尝试使用新的模块系统。 该项目只是一个使用Spring,JDBC和Shedlock的简单示例。1、阅读所有可用的文档和规格说明。 嗯,听起来很无聊。 跳过第一步。2、下载JDK并尝试运行该项目。 我们很幸运,我们所有的依赖只使用公共Jav