云原生【Docker】—— 认识 Docker、Docker 与虚拟机对比、Docker 组件
目录
一、认识 Docker
1. 什么是虚拟化
虚拟化是一种资源管理技术,将计算机的各种实体资源如服务器、内存、网络等抽象或者转换后呈现出来,打破实体结构间不可切割的状态,使得用户有更好的方式来应用这些资源。虚拟部分不受现有资源的架设方式、地域、物理组态等限制。
一般所指的虚拟化资源包括计算能力和存储资源。在实际生产环境中,虚拟化技术主要用来解决高性能的物理硬件产能过剩和老旧硬件产能过低的重组重用,透明化底层物理硬件,达到利用的最大化。虚拟化技术包括软件虚拟化、硬件虚拟化、内存虚拟化、网络虚拟化、桌面虚拟化、服务虚拟化、虚拟机等。
2. 什么是 Docker
Docker 本身就是一种虚拟化技术,但和传统虚拟化技术又有一定的区别。诞生于 2013 年,是一个开源的项目,它基于 Google 公司的 go 语言实现,后来加入了 Linux 基金会,遵循 apache 2.0 协议,项目在 GitHub 进行维护,它的目标是实现轻量级的操作系统虚拟化解决方案。
Docker 的基础是 Linux 容器(LXC),在 LXC 的基础上进行了进一步的封装,让用户无需再去关心容器的管理,使得操作更为简易,用户操作 Docker 的容器就像操作虚拟机一样简单。
3. 为什么选择 Docker?
上手快;
用户仅需几分钟就可以把自己的程序 “Docker” 化,Docker 依赖于 “写时复制(copy-on-write)” 模型,修改程序应用极为迅速,可以说达到了 “随心所欲,代码即改” 的境界。
职责的逻辑分类;
使用 Docker,开发人员只需关心容器中运行的应用程序,运维人员只需关心如何管理容器,加强了开发人员的开发环境与应用程序部署生产环境的一致性。
快速高效的开发生命周期;
Docker 的目标之一就是缩短代码从开发、测试、部署、上线到运行的周期,让程序易于可移植性、易于构建和协作。
鼓励使用面向服务的架构;
Docker 鼓励面向服务的体系架构和微服务架构。它推荐单个容器只运行一个程序或进程,这就形成了分布式的应用程序模型。Docker 为微服务而生。
二、容器与虚拟机的区别
首先是传统的虚拟化技术,以 Hypervisor 为例(类似于 VMware 虚拟机)。
- 最底层(第 0 层)为 Server,也就是服务器的硬件;
- 第 1 层为服务器本身的操作系统;
- 第 2 层是管理虚拟机的软件(虚拟层);
- 第 3 层就是虚拟机,可以有若干个,要注意这些虚拟机的操作系统与本地的操作系统是没有任何关系的,因为它是运行在虚拟层的软件上的。
其次为容器技术机制,底层和第一层与传统虚拟技术相同。
- 第 2 层为 Docker 引擎,也就是我们安装的 Docker 软件;
- 第 3 层为二进制的一些库和各种应用软件;
可以看到,二者的主要区别在于虚拟层和 Docker 引擎(第 2、3 层)。
虚拟层可以虚拟一些硬件,虚拟出不同类型的操作系统,所以虚拟操作系统与本地操作类型是不一定一致的。而在 Docker 机制中,每个应用软件(容器)没有自己的操作系统的,它的环境直接依赖于本机操作系统的环境,调用的也直接是本机操作系统。
容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,传统方式则是在硬件层面实现。与传统的虚拟机相比,Docker 的优势体现为启动速度快、占用体积小。
三、Docker 组件
1. Docker 服务器与客户端
Docker 是一种客户端-服务器(C/S)架构模式,Docker 客户端只需要向服务器或守护进程发送请求,服务器或守护进程将完成所有工作并返回结果。
2. Docker 镜像与容器
镜像是构建 Docker 的基石,用户基于镜像运行自己的容器。镜像是基于文件系统的一种层式结构,由一系列指令一步一步构建出来。镜像体积很小,便于分享、存储和更新。
Docker 可以帮助构建和部署容器,只需要把自己的应用程序或服务打包放进容器即可。容器是基于镜像启动起来的,容器中可以运行一个或多个进程。可以认为镜像是 Docker 生命周期中的构建或者打包阶段,而容器则是启动或者执行阶段。容器基于镜像启动,一旦容器启动完成后,我们就可以登录到容器中安装自己需要的软件或者服务。
所以说容器就是一个镜像格式、一些列标准操作、一个执行环境。
3. Registry 注册中心
Docker 用 Registry 来保存用户构建的镜像,分为公共和私有两种。Docker 公司运营公共的 Registry 叫做 Docker Hub。用户可以在 Docker Hub 注册账号,分享并保存自己的镜像。Docker Hub 网址如下:
Docker Hubhttps://hub.docker.com/
文章来源: majinjian.blog.csdn.net,作者:Developer 小马,版权归原作者所有,如需转载,请联系作者。
原文链接:majinjian.blog.csdn.net/article/details/125427703
- 点赞
- 收藏
- 关注作者
评论(0)