01-Docker概述

简介: Docker是基于Go语言的开源容器技术,实现“一次镜像,处处运行”。它将应用及依赖打包为轻量级、可移植的容器,直接利用宿主机内核,启动快、资源占用少。相比传统虚拟机,容器以进程形式运行,秒级启动,单机可支持上千个容器,大幅提升系统资源利用率。

01-Docker概述

Docker简介Docker是基于Go语言实现的云开源项目。Docker的主要目标是:Build, Ship and Run Any App, Anywhere,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP及其运行环境能做到一次镜像,处处运行。传统虚拟机和容器传统虚拟机(virtual machine):传统虚拟机技术基于安装在主操作系统上的虚拟机管理系统(如VirtualBox、VMware等),创建虚拟机(虚拟出各种硬件),在虚拟机上安装从操作系统,在从操作系统中安装部署各种应用。缺点:资源占用多、冗余步骤多、启动慢Linux容器(Linux Container,简称LXC):Linux容器是与系统其他部分分隔开的一系列进程,从另一个镜像运行,并由该镜像提供支持进程所需的全部文件。容器提供的镜像包含了应用的所有依赖项,因而在从开发到测试再到生产的整个过程中,它都具有可移植性和一致性。Linux容器不是模拟一个完整的操作系统,而是对进程进行隔离。有了容器,就可以将软件运行所需的所有资源打包到一个隔离的容器中。容器与虚拟机不同,不需要捆绑一整套操作系统,只需要软件工作所需的库资源和设置。系统因此而变得高效轻量并保证部署在任何环境中的软件都能始终如一的运行。

对比:

特性

容器

虚拟机

启动

秒级

分钟级

大小

一般为Mb

一般为Gb

速度

接近原生

比较慢

系统支持数量

单机支持上千个容器

一般几十个

Docker运行速度快的原因Docker有比虚拟机更少的抽象层:由于Docker不需要Hypervisor(虚拟机)实现硬件资源虚拟化,运行在Docker容器上的程序直接使用的都是实际物理机的硬件资源,因此在CPU、内存利用率上docker有明显优势。Docker利用的是宿主机的内核,而不需要加载操作系统OS内核:当新建一个容器时,Docker不需要和虚拟机一样重新加载一个操作系统内核。进而避免引寻、加载操作系统内核返回等比较耗时耗资源的过程。当新建一个虚拟机时,虚拟机软件需要加载OS,返回新建过程是分钟级别的。而Docker由于直接利用宿主机的操作系统,则省略了返回过程,因此新建一个docker容器只需要几秒钟。Docker容器的本质就是一个进程。Docker软件Docker并非一个通用的容器工具,它依赖于已经存在并运行的Linux内核环境。(在Windows上安装Docker时需要依赖WLS,也即Windows下的Linux子系统)。Docker实质上是在已经运行的Linux下制造了一个隔离的文件环境,因此它执行的效率几乎等同于所部署的Linux主机。Docker的基本组成部分:镜像(image)容器(container)仓库(repository)Docker镜像Docker镜像就是一个只读的模板。镜像可以用来创建Docker容器,一个镜像可以创建多个容器。Docker容器Docker利用容器独立运行的一个或一组应用,应用程序或服务运行在容器里面,容器就类似于一个虚拟化的运行环境,容器是用镜像创建的运行实例。Docker仓库Docker仓库是集中存放镜像文件的场所。仓库分为公开仓库和私有仓库两种。最大的公开仓库是Docker官方的Docker Hub:https://hub.docker.com/Docker架构Docker是一个 C/S(Client-Server) 结构的系统,后端是一个松耦合架构,众多模块各司其职。Docker守护进程运行在主机上,然后通过Socket连接从客户端访问,守护进程从容器接收命令并管理运行在主机上的容器。Docker运行的基本流程为:用户是使用Docker Client 与 Docker Daemon 建立通信,并发送请求给后者Docker Daemon 作为 Docker 架构的主体部分,首先提供 Docker Server 的功能使其可以接收 Docker Client 的请求Docker Engine 执行 Docker 内部的一系列工作,每一项工作都是以一个 Job 的形式存在Job 的运行过程中,当需要容器镜像时,则从 Docker Registry 中下载镜像,并通过镜像管理驱动 Graph Driver 将下载镜像以 Graph 的形式存储当需要为 Docker 创建网络环境时,通过网络管理驱动 Network driver 创建并配置 Docker 容器网络环境当需要限制 Docker 容器运行资源或执行用户指令等操作时,则通过 Exec driver 来完成Libcontainer 是一项独立的容器管理包,Network driver 以及 Exec driver 都是通过 Libcontainer 来实现具体对容器进行的操作

相关文章
|
Ubuntu Linux
Ubuntu中下载编译linux内核源码
Ubuntu中下载编译linux内核源码
Ubuntu中下载编译linux内核源码
|
10月前
|
人工智能 自然语言处理 API
AI-Compass Agent智能体技术生态:整合AutoGPT、LangGraph、CrewAI等前沿框架,构建自主决策工具调用的AI智能体系统
AI-Compass Agent智能体技术生态:整合AutoGPT、LangGraph、CrewAI等前沿框架,构建自主决策工具调用的AI智能体系统
|
9月前
|
Ubuntu 安全 Linux
2024 年最适合高级用户的 11 个 Linux 发行版
当然,上述列举的只是众多可用Linux发行版中的一小部分,远远不能穷尽全部。目前,全球有600多个Linux发行版,其中大约有500个处于积极开发的状态。 然而,我们认为有必要关注一些广泛应用的发行版,其中一些发行版的设计理念甚至影响了其他Linux发行版的风格与发展方向。这些发行版在Linux社区中扮演着重要的角色,并因其独特的特点和广泛的用户群体而备受关注。
|
机器学习/深度学习 人工智能 自然语言处理
Genesis:卡内基梅隆大学联合 20 多所研究机构开源生成式物理引擎,能够模拟各种材料、物体和物理运动现象
Genesis是由卡内基梅隆大学联合20多所研究机构开源的生成式物理引擎,能够模拟世界万物,具有高度的物理准确性和快速的模拟速度,适用于机器人仿真、游戏开发、电影特效制作等多个领域。
895 21
Genesis:卡内基梅隆大学联合 20 多所研究机构开源生成式物理引擎,能够模拟各种材料、物体和物理运动现象
|
安全 搜索推荐 Android开发
揭秘iOS与Android系统的差异:一场技术与哲学的较量
在当今数字化时代,智能手机操作系统的选择成为了用户个性化表达和技术偏好的重要标志。iOS和Android,作为市场上两大主流操作系统,它们之间的竞争不仅仅是技术的比拼,更是设计理念、用户体验和生态系统构建的全面较量。本文将深入探讨iOS与Android在系统架构、应用生态、用户界面及安全性等方面的本质区别,揭示这两种系统背后的哲学思想和市场策略,帮助读者更全面地理解两者的优劣,从而做出更适合自己的选择。
|
搜索推荐 物联网 智能硬件
智能穿戴设备的应用场景
智能穿戴设备的应用场景广泛且多样化,它们不仅提升了日常生活的便利性,还融入了健康管理和科技娱乐等多个方面。以下是一些具体的智能穿戴设备应用场景:
|
存储 人工智能 关系型数据库
使用 PostgreSQL pgvector 的 AI 应用程序中的多模态搜索
大型语言模型(LLM)的发展已拓展至多模态领域,不仅能处理文本,还能解析图像。本文介绍如何构建一个多模态搜索应用,用户可通过上传图片或输入文本来搜索印度菜谱。该应用支持多种LLM服务,如OpenAI及Ollama本地部署模型,并运用pgvector扩展在PostgreSQL中高效存储和检索向量嵌入。我们还展示了如何生成菜谱描述的嵌入并向数据库写入这些嵌入,以及如何通过API接口结合文本和图像查询来获取最相关的菜谱结果。此外,讨论了使用分布式SQL数据库如YugabyteDB增强应用的可扩展性和健壮性。
700 1
|
安全 物联网 物联网安全
物联网安全风险分析
### 物联网安全概览 #### 背景 物联网设备因其默认安全设置薄弱,成为黑客攻击目标。随着OT网络中物联网角色增多,这些设备临近关键系统,攻击者利用其发起攻击。 #### 物联网定义 物联网(IoT)是通过信息传感设备连接物品与互联网,实现智能化识别、定位、跟踪的网络。涵盖智能家居、可穿戴设备到复杂工业系统。 #### 攻击者偏好 物联网设备易受攻击,2022年针对物联网的网络攻击大幅增长,如DDoS攻击和恶意软件事件。物联网端点的安全疏忽使其成为恶意软件传播途径。 #### 制造业面临风险 制造业因物联网设备被攻击,导致勒索软件攻击增加,因生产中断造成的损失更大。
物联网安全风险分析
|
JSON 数据库 开发者
FastAPI入门指南:Python开发者必看——从零基础到精通,掌握FastAPI的全栈式Web开发流程,解锁高效编码的秘密!
【8月更文挑战第31天】在当今的Web开发领域,FastAPI迅速成为开发者的热门选择。本指南带领Python开发者快速入门FastAPI,涵盖环境搭建、基础代码、路径参数、请求体处理、数据库操作及异常处理等内容,帮助你轻松掌握这一高效Web框架。通过实践操作,你将学会构建高性能的Web应用,并为后续复杂项目打下坚实基础。
986 0