原创

Docker初学1:认识Docker


前言:本博客内容是对【狂神说Java】中的Docker教程学习过程中的记录与总结

Docker的历史

Docker公司 Docker 公司位于旧金山,由法裔美籍开发者和企业家 Solumon Hykes 创立,其标志如下图所示。 请添加图片描述

Docker 公司起初是一家名为 dotCloud 的平台即服务(Platform-as-a-Service, PaaS)提供商。

底层技术上,dotCloud 平台利用了 Linux 容器技术。为了方便创建和管理这些容器,dotCloud 开发了一套内部工具,之后被命名为“Docker”。Docker就是这样诞生的!

2013年,dotCloud 的 PaaS 业务并不景气,为了寻求新的突破,将公司重命名为“Docker”,放弃dotCloud PaaS 平台,将Docker代码开源。

Docker一经开源就吸引了一大批人的投资,他们的经济状况转危为安。

Docker的理念

Docker是基于Go语言实现的云开源项目。 Docker的主要目标是“Build,Ship and Run Any App , Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次封装,到处运行”(怎么感觉这么像Java)。 Linux 容器技术的出现就解决了这样一个问题,而 Docker 就是在它的基础上发展过来的。将应用运行在Docker 容器上面,而 Docker 容器在任何操作系统上都是一致的,这就实现了跨平台、跨服务器。只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作。

Docker为什么这么火?

  • 小巧(占用资源少) 在Docker(容器技术)出来之前的使用的都是虚拟机技术,在电脑的原生环境中虚拟一个其他系统。 以下吐槽可以省略... 每当我们想要在Windows底下使用个Linux的环境只能使用VM开一台Linux虚拟机,这个虚拟机包含了Linux系统下的所有东西,而我们只想使用部分功能,这就会出现资源的浪费,使用过VM虚拟机的应该都有同样的感受,明明自己只想要一个Linux的命令行操作一些东西,开了一个虚拟机却占了电脑贼大的内存和磁盘。 而Docker出来之后,我们就只需要几兆或者几十兆就可以虚拟出我们想要的一个环境。
  • 启动快 小巧也就意味着启动速度加快,真正的秒级启动,不像虚拟机启动要个一两分钟。

Docker与虚拟机技术的区别

传统虚拟机:

  1. 虚拟出一套硬件,运行一个完整的操作系统,然后再这个系统上安装、运行软件

容器技术:

  1. 容器内的应用直接运行在宿主机的内核中,容器是没有自己的内核的,也没有虚拟我们的硬件,所以就比较轻便。
  2. 每个容器间都是相互隔离的,每个容器内都有一套属于自己的文件系统,容器之间进程不会互相影响,能区分计算资源

开发/运维(DevOps)

  • 更快速的应用交付和部署: 传统的应用开发完成后,需要提供一堆安装程序和配置说明文档,安装部署后需根据配置文档进行繁杂的配置才能正常运行。Docker化之后只需要交付少量容器镜像文件,在正式生产环境加载镜像并运行即可,应用安装配置在镜像里已经内置好,大大节省部署配置和测试验证时间。
  • 更便捷的升级和扩缩容: 随着微服务架构和Docker的发展,大量的应用会通过微服务方式架构,应用的开发构建将变成搭乐高积木一样,每个Docker容器将变成一块“积木”,应用的升级将变得非常容易。当现有的容器不足以支撑业务处理时,可通过镜像运行新的容器进行快速扩容,使应用系统的扩容从原先的天级变成分钟级甚至秒级。
  • 更简单的系统运维: 应用容器化运行后,生产环境运行的应用可与开发、测试环境的应用高度一致,容器会将应用程序相关的环境和状态完全封装起来,不会因为底层基础架构和操作系统的不一致性给应用带来影响,产生新的BUG。当出现程序异常时,也可以通过测试环境的相同容器进行快速定位和修复。
  • 更高效的计算资源利用: Docker是内核级虚拟化,其不像传统的虚拟化技术一样需要额外的Hypervisor [管理程序] 支持,所以在一台物理机上可以运行很多个容器实例,可大大提升物理服务器的CPU和内存的利用率。

Docker的学习途径

Docker官网:Docker官网 Docker的官方文档地址:Docker官方文档 Docker Hub,这个类似于github,可以在上面上传或者下载镜像:Docker Hub

Docker
End
  • 作者:小关同学(联系作者)
  • 发表时间:2021-07-22 16:26
  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
  • 公众号转载:请在文末添加作者博客链接
  • 问题交流(QQ群)