开发者学堂课程【Docker 快速入门:Docker 能干什么】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/616/detail/9388
Docker 能干什么
内容介绍:
一、之前的虚拟机技术
二、容器虚拟化技术
三、开发/运维(DevOps)
四、企业级
五、Docker 下载
我们在没有 Docker 之前,为了模拟 Java 后端开发的部署,只要是 Java 工程师就离不开 Linux 系统,无论是阿里云还是 Ubuntu 等,公司用哪个都可以。
Docker 技术又叫容器虚拟,那么它跟这个虚拟机有什么关系呢?参考虚拟机得到了容器虚拟化技术然后迭代优化,接下来我们看两者的区别。
一、之前的虚拟机技术
1、虚拟机(virtual machine)就是带环境安装的一种解决方案。
它可以在一种操作系统里面运行另一种操作系统,比如在 Windows 系统里面运行 Linux 系统。应用程序对此毫无感知,因为虚拟机看上去跟真实系统一模一样,而对于底层系统来说,虚拟机就是一个普通文件,不需要了就删掉,对其他部分毫无影响。这类虚拟机完美的运行了另一套系统,能够使应用程序,操作系统和硬件三者之间的逻辑不变。
此图灰色部分为宿主机系统,可以看作 Windows 10,然后我们安装虚拟机软件在上面运行 CentOS,模拟了之后,Kernel、Linux 内核和各种库共用这部分。除了库和 Linux 内核等各种优化,它还包含各种硬件,虚拟机不但模拟虚拟机操作系统,还模拟内存、处理器、硬盘等,甚至包括打印机,极其强大。
环境、软件、硬件都克隆了一份,此时我们在上面安装各种 APP 和配置,但是虚拟机的启动时间是分钟级的,而 Docker 是秒级,因此我们可以看到虚拟机的缺点。
2、虚拟机的缺点:
①资源占用多 ②冗余步骤多 ③启动慢
二、容器虚拟化技术
1、由于前面虚拟机存在这些缺点,Linux 发展出了另一种虚拟化技术: Linux 容器(Linux Containers,缩写为 LXC)。
Docker 很机智,看图片一个个的集装箱很多,但运集装箱的就只有鲸鱼这艘游轮,此时 Docker 就提出在 Linux 虚拟机之上研发。Linux 容器不是模拟一个完整的操作系统,而是对进程进行隔离,有了容器,就可以将软件运行所需的所有资源打包到一个隔离的容器中。容器与虚拟机不同,不需要捆绑一整套操作系统,只需要软件工程所需的库资源和设置。系统因此而变得高效轻量并保证部署在任何环境中的软件都能始终如一地运行。
如图所示,此时不需要公用这些库,而是变成小范围,每个蓝色框内就是鲸鱼背上的集装箱,各自拥有独立的工作空间。
2、比较了 Docker 和传统虚拟化方式的不同之处:
*传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需要应用进程;
*而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器比传统虚拟机更为轻便。
*每个容器之间互相隔离,每个容器有自己的文件系统,容器之间进程不会互相影响,能区分计算资源,降低了耦合度。
因此 Docker 彻底解决了虚拟机的三大缺点,也可以说 Docker 就是缩小版、精细版的 Linux 系统。
三、开发/运维(DevOps)
DevOps 即开发自运维
1、一次构建,随处运行(优点)
①更快速的应用交付和部署
②更便捷的升级和扩缩容
③更简单的系统运维
④更高效的计算资源利用
传统的应用开发完成后,需要提供一堆安装程序和配置说明文档,安装部署后需根据配置文档进行繁杂的配置才能正常运行。Docker 化之后只需要交付少量容器镜像文件,在正式生产环境加载镜像并运行即可,应用安装配置在镜像里已经内置好,大大节省部署配置和测试验证时间。
四、企业级
1、新浪
如图所示,Docker、Mesos 等容器技术使大规模动态调度成为可能,新浪微博平时不可能是最满负荷,比如某个帖子点击量大,转发率高了以后,此时它就形成弹性云扩容,在十分钟中内完成一千节点的扩容能力。
2、美团
如图所示,Docker 更轻量,此前讲过 Linux 的 CentOS 镜像文件接近 4G,但是请看 Docker 下的 CentOS 基础镜像仅 170M。某种角度而言,Docker 是缩小版,精细版的虚拟机,换句话说 Docker 只装这个内核,其他的一些较大的硬件不装,共用宿主机的就可以,在虚拟机 Linux 的基础上做了减法。
3、蘑菇街
图示右侧为 Docker 的优势:
·轻量,秒级的快速启动速度
·简单,易用,活跃的社区
·标准统一的打包/部署/运行方案
·镜像支持增量分发,易于部署
·易于构建,良好的 REST API,也很适合自动化测试和持续集成
·性能,尤其是内存和 IO 的开销
五、Docker 下载
1、官网
①docker 官网: http://www.docker.com
②docker 中文网站: https://www.docker-cn.com/
2. 仓库
我们在 GitHub 提交代码,Docker Hub 类似于 GitHub,不过是提交鲸鱼背上的集装箱(容器),运行环境的打包封装就叫镜像,但是作为外网太慢,我们几乎用不到。
Docker Hub 官网: https://hub.docker.com/