快速了解Docker(概念+基本组成)

Docker概述

Dokcer概念

容器虚拟化技术,系统平滑移植,解决了运行环境和配置问题的软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术

Docker意义

Docker的出现使得Docker得以打破过去程序即应用的观念,透过镜像将作业系统核心除外,运作应用程序所需要的系统环境,由下而上打包,达到应用程序跨平台间的无缝接轨运作

Docker主要目标

Docker的主要目标就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP及其运行环境能够做到"一次镜像,处处运行",只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作。

容器与虚拟机比较

1.传统虚拟机技术

**虚拟机****就是带环境安装的一种解决方案,它可以在一种操作系统里面运行另一种操作系统,比如在Window10系统里面运行Linux系统CentOS7。**应用程序对此毫无感知,因为虚拟机看上去跟真实系统一模一样,而对于底层系统来说,虚拟机就是一个普通文件,不需要了就删除,对其他部分毫无影响。这类虚拟机完美的运行了另一套系统,能够使应用程序、操作系统和硬件三者之间的逻辑不变。

虚拟机的缺点:1.资源占用多 2.冗余步骤多 3.启动慢

2.容器虚拟化技术

Linux容器是与系统其他部分隔离开的一系列进程,从另一个镜像运行,并由该镜像提供支持进程所需的全部文件,容器提供的镜像包含了应用的所有依赖性项,因而在从开发到测试再到生产的整个过程中,都具有可移植性和一致性。

Linux容器不是模拟一个完整的操作系统而是对进程进行隔离。有了容器就可以将软件运行所需的所有资源打包到一个隔离的容器中。容器与虚拟机不同,不需要捆绑一整套操作系统,只需要软件工作所悟的库资源和设置,系统因此而变得高效轻量并保证部署在任何环境中的软件都能始终如一地运行。

Docker容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统虚拟机则是在硬件层面实现虚拟化。与传统的虚拟机相比,Docker优势体现在启动速度快、占用体积小。

Docker基本组成

三要素:镜像文件、容器实例、仓库

镜像文件

image文件生成的容器实例,本身也是一个文件,称为镜像文件。 Docker镜像就是一个只读的模板,Docker镜像可以用来创建Docker容器,一个镜像可以创建很多容器。Docker镜像文件类似于Java的类模板,而docker容器实例类似于java中new出来的实例对象。

容器实例

一个容器运行一种服务,当我们需要的时候,就可以通过docker客户端创建一个对应的运行实例,也就是我们的容器。

从面向对象的角度看,Docker利用容器独立运行的一个或一组应用,应用程序或服务运行在容器里面,容器就类似于一个虚拟化的运行环境,容器是用镜像创建的运行实例,容器是镜像运行时的实体,容器为镜像提供了一个标准的和隔离的运行环境,它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。

仓库

是集中存放镜像文件的场所。仓库就是放一堆镜像的地方,我们可以把镜像发布到仓库中,需要的时候再从仓库中拉下来就可以了。

Docker公司提供的官方仓库被称为Docker Hub(https://hub.docker.com/),存放各种镜像模板的地方。

Docker优势

由于docker不需要跟虚拟机一样实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源,因此在CPU、内存利用率上docker将会在效率上有明显优势(docker利用的是宿主机的内核,而不需要加载操作系统OS内核)

|-------|----------------|-----------------|
| | Docker容器 | 虚拟机VM |
| 操作系统 | 与宿主机共享OS | 宿主机OS上运行虚拟机OS |
| 存储大小 | 镜像小,便于存储与传输 | 镜像庞大 |
| 运行性能 | 几乎无额外性能损失 | 操作系统额外的CPU、内存消耗 |
| 移植性 | 轻便、灵活,适用于Linux | 笨重,与虚拟化技术耦合度高 |
| 硬件亲和性 | 面向软件开发者 | 面向硬件运维者 |
| 部署速度 | 快速,秒级 | 较慢,10s以上 |

相关推荐
梦想的颜色4 小时前
【Docker原理】Docker 容器一文打尽:生命周期、环境管控、迁移备份、日志进程排查、垃圾清理
运维·docker·容器·容器生命周期·容器日志排查·容器迁移备份·容器进程管理
折哥的程序人生 · 物流技术专研5 小时前
第4篇:Lambda 简化策略模式(Java 8+)
java·设计模式·策略模式·函数式编程·lambda·代码简化·扩充系列
researcher-Jiang6 小时前
高性能计算之OpenMP——超算习堂学习1
android·java·学习
万里侯7 小时前
GitOps 漂移检测:集群里改了配置,Git 还以为一切正常
微服务·容器·k8s
西门吹-禅7 小时前
java springboot N+1问题
java·开发语言·spring boot
DLYSB_7 小时前
生命通道:如何用 HIS 医疗系统直连网络声光终端,打造“零延误”的危急值响应网关?
java·网络·数据库·报警灯
weixin_BYSJ19878 小时前
SpringBoot + MySQL 乒乓球运动员信息管理系统项目实战--附源码04954
java·javascript·spring boot·python·django·flask·php
AI小码8 小时前
LLM 应用的缓存工程:当每次 API 调用都在燃烧成本
java·人工智能·spring·计算机·llm·编程·api
Hui Baby9 小时前
Spring Security
java·后端·spring
IT笔记9 小时前
【Rust】Rust Match 模式匹配详解
java·开发语言·rust