Docker 能干什么 | 学习笔记

简介: 快速学习 Docker 能干什么

开发者学堂课程【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 系统。应用程序对此毫无感知,因为虚拟机看上去跟真实系统一模一样,而对于底层系统来说,虚拟机就是一个普通文件,不需要了就删掉,对其他部分毫无影响。这类虚拟机完美的运行了另一套系统,能够使应用程序,操作系统和硬件三者之间的逻辑不变。

image.png

此图灰色部分为宿主机系统,可以看作 Windows 10,然后我们安装虚拟机软件在上面运行 CentOS,模拟了之后,Kernel、Linux 内核和各种库共用这部分。除了库和 Linux 内核等各种优化,它还包含各种硬件,虚拟机不但模拟虚拟机操作系统,还模拟内存、处理器、硬盘等,甚至包括打印机,极其强大。

环境、软件、硬件都克隆了一份,此时我们在上面安装各种 APP 和配置,但是虚拟机的启动时间是分钟级的,而 Docker 是秒级,因此我们可以看到虚拟机的缺点。

2、虚拟机的缺点:

①资源占用多 ②冗余步骤多 ③启动慢

 

二、容器虚拟化技术

image.png

1、由于前面虚拟机存在这些缺点,Linux 发展出了另一种虚拟化技术: Linux 容器(Linux Containers,缩写为 LXC)。

Docker 很机智,看图片一个个的集装箱很多,但运集装箱的就只有鲸鱼这艘游轮,此时 Docker 就提出在 Linux 虚拟机之上研发。Linux 容器不是模拟一个完整的操作系统,而是对进程进行隔离,有了容器,就可以将软件运行所需的所有资源打包到一个隔离的容器中。容器与虚拟机不同,不需要捆绑一整套操作系统,只需要软件工程所需的库资源和设置。系统因此而变得高效轻量并保证部署在任何环境中的软件都能始终如一地运行。

image.png

如图所示,此时不需要公用这些库,而是变成小范围,每个蓝色框内就是鲸鱼背上的集装箱,各自拥有独立的工作空间。

2、比较了 Docker 和传统虚拟化方式的不同之处:

*传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需要应用进程;

*而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器比传统虚拟机更为轻便。

*每个容器之间互相隔离,每个容器有自己的文件系统,容器之间进程不会互相影响,能区分计算资源,降低了耦合度。

因此 Docker 彻底解决了虚拟机的三大缺点,也可以说 Docker 就是缩小版、精细版的 Linux 系统。

 

三、开发/运维(DevOps)

DevOps 即开发自运维

1、一次构建,随处运行(优点)

①更快速的应用交付和部署

②更便捷的升级和扩缩容

③更简单的系统运维

④更高效的计算资源利用

传统的应用开发完成后,需要提供一堆安装程序和配置说明文档,安装部署后需根据配置文档进行繁杂的配置才能正常运行。Docker 化之后只需要交付少量容器镜像文件,在正式生产环境加载镜像并运行即可,应用安装配置在镜像里已经内置好,大大节省部署配置和测试验证时间。

 

四、企业级

1、新浪

image.png

image.png

如图所示,Docker、Mesos 等容器技术使大规模动态调度成为可能,新浪微博平时不可能是最满负荷,比如某个帖子点击量大,转发率高了以后,此时它就形成弹性云扩容,在十分钟中内完成一千节点的扩容能力。

2、美团

image.png

如图所示,Docker 更轻量,此前讲过 Linux 的 CentOS 镜像文件接近 4G,但是请看 Docker 下的 CentOS 基础镜像仅 170M。某种角度而言,Docker 是缩小版,精细版的虚拟机,换句话说 Docker 只装这个内核,其他的一些较大的硬件不装,共用宿主机的就可以,在虚拟机 Linux 的基础上做了减法。

3、蘑菇街

image.png

图示右侧为 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/

image.png

相关文章
|
3月前
|
Kubernetes Ubuntu Linux
docker学习笔记
docker学习笔记
52 0
|
26天前
|
安全 网络安全 开发者
Docker学习笔记(一):Docker命令总结
本文介绍了Docker的基本概念、优点以及常用命令。Docker是一个开源的应用容器引擎,它通过容器打包应用程序及其依赖项,实现快速部署和迁移。主要优点包括轻量级、可移植性、易于管理、安全性和开源性。文章还区分了镜像和容器的概念,并提供了构建镜像、查看容器、运行容器、停止和删除容器等常用Docker命令的示例。
123 0
|
2月前
|
Docker Windows Python
Windows-Docker学习笔记(一)
本文介绍了Windows环境下Docker的安装与使用方法。首先通过链接下载Windows版本的Docker,然后按步骤配置:启用Windows功能、设置默认WSL版本为2,并检查Docker及其组件是否正常工作。接着详细列出了Docker的基础命令及其用法,包括搜索、下载镜像、管理容器等。同时介绍了Dockerfile的编写方法及其构建过程,以及docker-compose.yml文件的用途。最后提供了运行和管理容器的具体示例。
Windows-Docker学习笔记(一)
|
3月前
|
前端开发 jenkins 持续交付
jenkins学习笔记之二十:docker in docker运行pipeline
jenkins学习笔记之二十:docker in docker运行pipeline
|
3月前
|
jenkins Java 持续交付
jenkins学习笔记之十九:Docker安装jenkins master及动、静态配置slave
jenkins学习笔记之十九:Docker安装jenkins master及动、静态配置slave
|
6月前
|
安全 Linux Docker
Ubantu docker学习笔记(六)容器数据卷
Ubantu docker学习笔记(六)容器数据卷
Ubantu docker学习笔记(六)容器数据卷
|
6月前
|
Kubernetes 调度 Docker
Ubantu docker学习笔记(十一)k8s基本操作
Ubantu docker学习笔记(十一)k8s基本操作
|
6月前
|
Prometheus 监控 Cloud Native
Ubantu docker学习笔记(九)容器监控 自带的监控+sysdig+scope+cAdvisor+prometheus
Ubantu docker学习笔记(九)容器监控 自带的监控+sysdig+scope+cAdvisor+prometheus
|
6月前
|
存储 应用服务中间件 nginx
Ubantu docker学习笔记(八)私有仓库
Ubantu docker学习笔记(八)私有仓库
|
6月前
|
网络协议 Docker 容器
Ubantu docker学习笔记(七)容器网络
Ubantu docker学习笔记(七)容器网络
下一篇
无影云桌面