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

ISOLATE SYSTEMS

ISOLATE APPLICATIONS

APP #1

APP #3

APP #2

BINS/LIBS

BINS/LIBS

BINS/LIBS

GUEST OS

GUEST OS

GUEST OS

APP #2

APP #1

APP #3

BINS / LIBS

BINS / LIBS

BINS/LIBS

DOCKER DAEMON

HYPERVISOR

HOST OPERATING SYSTEM

HOST OPERATING SYSTEM

INFRASTRUCTURE

INFRASTRUCTURE

VIRTUALMACHINES

DOCKER CONTAINERS



对比:

特性

容器

虚拟机

启动

秒级

分钟级

大小

一般为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运行的基本流程为:
1用户是使用Docker Client 与 Docker Daemon 建立通信,并发送请求给后者
2Docker Daemon 作为 Docker 架构的主体部分,首先提供 Docker Server 的功能使其可以接收 Docker Client 的请求
3Docker Engine 执行 Docker 内部的一系列工作,每一项工作都是以一个 Job 的形式存在
4Job 的运行过程中,当需要容器镜像时,则从 Docker Registry 中下载镜像,并通过镜像管理驱动 Graph Driver 将下载镜像以 Graph 的形式存储
5当需要为 Docker 创建网络环境时,通过网络管理驱动 Network driver 创建并配置 Docker 容器网络环境
6当需要限制 Docker 容器运行资源或执行用户指令等操作时,则通过 Exec driver 来完成
7Libcontainer 是一项独立的容器管理包,Network driver 以及 Exec driver 都是通过 Libcontainer 来实现具体对容器进行的操作


相关文章
|
9天前
|
关系型数据库 MySQL 数据库
基于python的电子商城购物系统
本研究基于Flask与Vue.js构建前后端分离的电商管理系统,结合MySQL实现高效数据管理。系统具备商品管理、订单处理、用户交互等功能,提升运营效率与用户体验,具有良好的扩展性与维护性,助力电商企业应对激烈市场竞争,推动智能化发展。
|
16天前
|
存储 弹性计算 缓存
阿里云2核4G服务器能支持多少人在线?2核4G云服务器性能测评
阿里云2核4G服务器支持的在线人数因应用类型、带宽和优化程度而异。静态网站在5M带宽下可支持30-50人/秒(配合CDN),小型动态应用约20-30人,低码率视频播放支持5-8人同时观看(CDN可提升至20人)。突发型实例性能有限,计算型更稳定。实际承载能力需结合具体场景优化。
333 161
|
18天前
|
运维 监控 网络协议
云拨测:当“正常变更”摧毁全球网络时,谁来守护你的业务可用性?
一次权限变更,引发全球边缘网络瘫痪4小时,数百万网站返回 5XX,连状态页也宕机。故障源于“正常的变更”,暴露了企业对服务商的盲目信任。当内部监控失效,唯有云拨测能从真实用户视角,独立验证“服务是否可用”。
120 14
|
10天前
|
人工智能 Java API
【Azure AI Search】如何通过Entra ID RBAC认证连接中国区 Azure AI Search
本文介绍如何在Java SDK中配置中国区AI Search资源访问。由于默认认证地址为全球环境(https://search.azure.com),在中国区需修改为https://search.azure.cn,并通过设置SearchAudience.AZURE_CHINA解决认证失败问题,确保资源正常获取。
99 18
|
5天前
|
移动开发 小程序 前端开发
小程序开发平台有哪些?哪个好
小程序项目落地的第一步,也是最关键的一步,就是开发平台的精准选型。它不仅影响项目的开发周期与成本投入,更直接决定了后续业务的适配度和运营上限。企业需结合自身技术能力、预算区间、功能需求等核心要素综合权衡。本文将对主流小程序开发平台进行分类拆解,通过详细对比和场景化推荐,帮助不同类型的企业找到最契合的解决方案。
115 9
|
23天前
|
存储 人工智能 前端开发
以无头 CMS 为核心构建适配全场景的内容中台
内容中台是品牌内容的数字家园,但只有具备灵活性、可扩展性和用户中心性才能发挥价值。无头CMS为搭建这样的内容中台提供了坚实基础,让团队摆脱传统平台的束缚,专注于核心——创作能引发共鸣、驱动成果的内容。
190 113
|
10天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1194 7
|
1月前
|
机器学习/深度学习 弹性计算 人工智能
阿里云服务器按量付费优惠参考:GPU实例按量特惠0.9折,按量达标满50返50券介绍
阿里云服务器选择按量付费有优惠吗?当然有的,如果你是计划购买gpu云服务器,现在有指定GPU实例低至0.9折优惠!短期测试/小规模验证可选按量付费,前100小时低至0.9折。如果你是购买其他实例规格的云服务器也有“上云用按量,达标即返券”优惠,满10元返10元,满50元返50元,可直接抵扣云服务器订单!
510 148
|
1月前
|
分布式计算 监控 API
DMS Airflow:企业级数据工作流编排平台的专业实践
DMS Airflow 是基于 Apache Airflow 构建的企业级数据工作流编排平台,通过深度集成阿里云 DMS(Data Management Service)系统的各项能力,为数据团队提供了强大的工作流调度、监控和管理能力。本文将从 Airflow 的高级编排能力、DMS 集成的特殊能力,以及 DMS Airflow 的使用示例三个方面,全面介绍 DMS Airflow 的技术架构与实践应用。
|
24天前
|
存储 Java
为什么JDK 9中把String的char[]改成了byte[]?
Java 9引入“Compact String”优化字符串存储:若字符均为Latin-1编码(单字节),则用byte[]存储,节省空间;否则仍用UTF-16。通过新增`coder`字段标识编码类型,提升存储效率并保持兼容性。
61 6