开发者学堂课程【SpringBoot快速掌握 - 核心技术:Docker简介】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/612/detail/9265
Docker简介
一、何为Docker ?
Docker 是一个开源的应用容器引擎,基于 Go 语言并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。
Docker 支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像。运行中的这个镜像称为容器,容器启动是非常快速的。类似 windows 里面的 ghost 操作系统,安装好后什么都有了;
Docker 是一个开源的应用容器引擎也类似以前了解的虚拟机技术,Docker 不是一个虚拟机,他是一个轻量级容器技术,他却实现了虚拟机技术里边的资源隔离。而且他的性能是要远远高于以前用的虚拟机的。以前要启动一个虚拟机,可能需要几分钟,而要启动一个 Docker 容器,几秒就完了,甚至于毫秒级别都能启动,那么 Docker 的产生背景,她的用途,可以通过一个现实中的一个例子。
假设张三要给他的电脑到换系统,他可以从微软的官方来下载,来下载 windows 的原生系统。原来系统是纯净版的,也没有驱动,也没有常用软件,张三就把相关的驱动安装完,把常用软件,比如 QQ,word 包括迅雷下载等等很多安装,安装完以后就能用了。但是如果李四也要装系统,那么他也用这种方式,把纯净版的 windows 系统拿来,驱动软件都没装,他也得安装驱动装软件。现在就有一种东西叫 Windows 镜像系统。镜像系统就是说张三把它的 windows 系统,然后它把里边的这些驱动常用软件都装好之后把整个一套东西打包成一个 Windows 镜像系统。这样别人要装系统时,拿到这个镜像系统装,所以张三里边原来他装的那些软件,别人也就有了,包括它配置好的东西,别人也都可以配置好的。这就是装 windows 镜像系统,而 docker 就类似于这种镜像的机制,虽然他跟这个 windows 版的镜像系统,它完全不是一个东西。而他们的思路是一样的,比如说,在开发和运维的过程中,经常让他给的服务器上来装各种各样的环境,比如要 linux 的服务器上要装 mysql 环境,要装 redis 或者 tomcat 等等。以前如何给 linux 的服务器上来装该系统,装这些软件环境。比如装 mysql 去 mysql 的官网下载 mysql 的安装包,比如 redis 要安装,或者 redis 的安装,这里都需要做很多在 linux 服务器上的环境,但是如果 mysql 在其他服务器也需要安装,也从官方下载在进行一大堆配置,这样就太麻烦了,这个时候 docker 相反,他可以支持安装配置好的软件打包成一个镜像,比如 mysql 在之前安装好可以打包成一个镜像,此时如果别人如果想在她的服务器在 linux 安装时,只要她的 linux 服务器安装了 docker,这个 docker 直接把之前打包好的镜像在服务器运行镜像就行,只要镜像运行,就认为运行起来的这个镜像称为一个容器,比如买 mysql 镜像,运行起来就有 mysql ,就是在他的 mysql 容器中运行。之后打包 redis 镜像来,在别的服务器运行起来,那就是他在自己的软 redis 服务器里面运行。每一个容器各容器之间也有沙箱的这种隔离机制也是非常好的,这样如果想要在其他的服务器里边,在要装 mysql 或者 redis 环境的时候,只需要装一次打包好镜像,在其他服务器里边儿运行镜像就就行了,就不用在每一个服务器里边儿都安装。这就是我 docker 能给带来的非常大的好处,也就是说 docker 的核心就是和支持将这些软件编译成一个镜像,然后再镜像中,可以把软件做好各种配置发布出去,别人就能直接使用这个镜像就行,别人不需要做一大堆配置。然后把这个镜像直接启动起来,运行中的就是镜像能成为的容器,而这个容器的启动是非常快的,容器是秒甚至毫秒级别的,而不像之前的虚拟机,然后再拿个训机让我装 mysql 。
这个是 docker 的 logo 标志,小鲸鱼加集装箱,代表了容器,各种平台也都支持 docker 的容器技术,所以有必要将他学好,后面为了降低对 linux 操作的难度,只需要记少量的 docker 命令就可以了。