Docker初步介绍

时间:2022-05-06 16:56:20

什么是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也帮我们节省了资源。为了说明这个问题,我用两幅图和一些说明来作比较:

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 确保一致性,从而使从系统到系统的迁移变得简单。