当前位置: 首页 > news >正文

Docker概念

概述

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版)。


Docker 的应用场景

  • 微服务架构:每个服务独立容器化,便于管理和扩展。

  • CI/CD流水线:与 Jenkins/GitLab CI 集成,实现自动化构建和测试。

  • 开发环境标准化:新成员一键启动全套依赖服务(如数据库、消息队列)。

  • 云原生基础:Kubernetes 等编排工具基于 Docker 管理容器集群。


核心优势

  • 跨平台一致性:解决"在我机器上能跑"的问题,确保开发、测试、生产环境一致。
  • 资源高效:容器直接共享主机内核,无需虚拟化整个操作系统,节省内存和 CPU。
  • 快速部署:秒级启动容器,支持自动化扩缩容。
  • 隔离性:每个容器拥有独立的文件系统、网络和进程空间。

核心概念

  • 容器(Container):轻量化的运行实例,包含应用代码、运行时环境和依赖库。基于镜像创建,与其他容器隔离,共享主机操作系统内核(比虚拟机更高效)。
  • 镜像(Image):只读模板,定义了容器的运行环境(如操作系统、软件配置等)。通过分层存储(Layer)优化空间和构建速度。
  • Dockerfile:文本文件,描述如何自动构建镜像(例如指定基础镜像、安装软件、复制文件等)。
  • 仓库(Registry):存储和分发镜像的平台,如 Docker Hub(官方公共仓库)或私有仓库(如 Harbor)。

基本命令

实例

安装
#apt install docker.io

#
拉取镜像(如官方Nginx镜像) docker pull nginx# 运行容器(-d 后台运行,-p 映射端口) docker run -d -p 80:80 nginx# 查看运行中的容器 docker ps# 构建镜像(基于当前目录的Dockerfile) docker build -t my-app .# 进入容器内部 docker exec -it <容器ID> /bin/bash

 

 

什么是容器化技术

容器共享主机内核,轻量、隔离且高效,不像虚拟机需要完整的操作系统,下图展示了 Docker 容器的基本架构:

  • 上层 是多个容器(App A~F),每个容器独立运行一个应用。
  • 中间层 是 Docker,负责管理这些容器。
  • 底层 是主机操作系统(Host OS)和基础设施,为容器提供硬件和系统支持。

1、传统应用部署的痛点

在传统的应用部署中,我们经常遇到以下问题:

  • 环境不一致:应用在开发环境运行正常,但在测试或生产环境出现问题
  • 依赖管理复杂:不同应用需要不同版本的运行时、库文件等
  • 资源利用率低:传统虚拟机需要完整的操作系统,占用大量资源
  • 部署复杂:需要手动配置环境、安装依赖,容易出错

2、容器化技术的解决方案

容器化技术通过以下方式解决了这些问题:

  • 环境标准化:将应用及其依赖打包在一起,确保在任何环境中都能一致运行
  • 轻量级:容器共享宿主机的操作系统内核,比虚拟机更轻量
  • 快速部署:容器可以在几秒内启动,大大提高了部署效率
  • 可移植性:一次构建,到处运行

3、容器化的核心理念

容器化遵循"不可变基础设施"的理念:

  • 应用和环境被打包成不可变的镜像
  • 每次部署都使用相同的镜像
  • 配置通过环境变量或配置文件注入
  • 问题修复通过重新构建镜像而非修改运行中的容器

Docker 的核心概念

1、镜像 (Image)

定义:镜像是一个只读的模板,包含了运行应用所需的所有内容:代码、运行时、库文件、环境变量和配置文件。

特点

  • 分层存储:镜像由多个层组成,每一层代表一次修改
  • 只读性:镜像本身是只读的,不能直接修改
  • 可复用:同一个镜像可以创建多个容器
  • 版本管理:通过标签(tag)进行版本管理

类比理解:镜像就像是一个安装程序或者模板,它定义了应用运行所需的一切,但本身不能直接运行。

2、容器 (Container)

定义:容器是镜像的运行实例,是一个轻量级、可移植的执行环境。

特点

  • 隔离性:每个容器都有自己的文件系统、网络和进程空间
  • 临时性:容器可以被创建、启动、停止、删除
  • 可写层:容器在镜像基础上添加了一个可写层
  • 进程级:容器内通常运行一个主进程

类比理解:如果镜像是类,那么容器就是对象实例。一个镜像可以创建多个容器,就像一个类可以创建多个对象。

3、仓库 (Repository)

定义:仓库是存储和分发镜像的地方,可以包含一个镜像的多个版本。

分类

  • 公共仓库:如 Docker Hub,任何人都可以使用
  • 私有仓库:企业内部搭建,用于存储私有镜像
  • 官方仓库:由软件官方维护的镜像仓库

Registry vs Repository

  • Registry:仓库注册服务器,如 Docker Hub
  • Repository:具体的镜像仓库,如 nginx、mysql

Docker 与虚拟机的区别

1、架构对比

特性虚拟机Docker容器
隔离级别 硬件级别虚拟化 操作系统级别虚拟化
操作系统 每个VM需要完整OS 共享宿主机OS内核
资源占用 重量级,占用较多资源 轻量级,资源占用少
启动时间 分钟级别 秒级别
性能开销 较大 接近原生性能
镜像大小 GB级别 MB级别

2、容器 VS 虚拟机架构

3、使用场景对比

虚拟机适用场景

  • 需要完全隔离的环境
  • 运行不同操作系统的应用
  • 需要硬件级别的安全隔离

Docker容器适用场景

  • 微服务架构
  • CI/CD流水线
  • 应用快速部署和扩展
  • 开发环境标准化

Docker 的优势和应用场景

主要优势

1. 环境一致性

  • 问题解决:"在我机器上能运行"的问题
  • 实现方式:应用和环境打包在一起
  • 价值:减少环境相关的bug和部署问题

2. 轻量级和高效

  • 资源利用:比虚拟机占用更少资源
  • 启动速度:秒级启动时间
  • 密度:单机可运行更多应用实例

3. 可移植性

  • 跨平台:Linux、Windows、macOS都支持
  • 云原生:在各种云平台间迁移
  • 混合环境:本地开发,云端部署

4. 版本控制和回滚

  • 镜像版本:每个版本都有对应的镜像
  • 快速回滚:出问题时快速回到上一版本
  • A/B测试:同时运行不同版本进行对比

5. 扩展性

  • 水平扩展:快速创建更多容器实例
  • 弹性伸缩:根据负载自动调整容器数量
  • 微服务:服务拆分和独立部署

典型应用场景

1. 微服务架构

  • 服务拆分:每个微服务独立容器化
  • 独立部署:服务可以独立更新和扩展
  • 技术栈自由:不同服务可以使用不同技术

2. CI/CD流水线

  • 构建环境:标准化的构建环境
  • 测试隔离:每个测试在独立容器中运行
  • 部署一致性:相同镜像在不同环境部署

3. 开发环境标准化

  • 快速搭建:新成员快速获得开发环境
  • 版本同步:团队使用相同的开发环境
  • 依赖管理:避免本地环境冲突

4. 应用现代化

  • 遗留系统:将传统应用容器化
  • 云迁移:帮助应用迁移到云平台
  • 混合云:在不同云环境间移植

Docker 的发展历史

关键时间节点

  • 2013年:Docker开源发布
  • 2014年:Docker 1.0发布,生产环境可用
  • 2016年:Docker Swarm发布,内置编排功能
  • 2017年:Docker分为CE(社区版)和EE(企业版)
  • 2019年:Docker Desktop发布,改善开发者体验

生态系统发展

  • 容器编排:Kubernetes成为事实标准
  • 容器运行时:containerd、CRI-O等替代方案
  • 镜像格式:OCI标准制定
  • 安全工具:容器安全扫描和监控工具

 

copy from runoob.com

http://www.hskmm.com/?act=detail&tid=28484

相关文章:

  • 痞子衡嵌入式:如果i.MXRT1xxx在Hab关闭时出现偶发性启动失败,请先检查JTAG电路
  • 2025 电缆绝缘材料生产厂家最新推荐榜单:品牌技术实力解析,爱普等企业领跑行业
  • SAP BP主数据维护BAPI CVI_EI_INBOUND_MAIN(转)
  • 2025 年最新外呼系统机构最新推荐排行榜:深度解析技术实力、服务体系及行业适配方案电话营销外呼系统/智能外呼系统/外呼系统电销卡/外呼系统平台搭建推荐
  • 详细介绍:深入解析 List 容器组件:构建高效、可交互的列表解决方案
  • CF848C Goodbye Souvenir 题解(CDQ分治)
  • 2025 年汽车刹车卡钳厂家最新推荐榜单:原厂适配 / 高性能 / 新能源专用等多类型产品深度解析及选购指南分体锻造/大轮毂/高性能/新能源汽车刹车卡钳厂家推荐
  • 2025年开发者必看:本土化代码管理平台Gitee如何助力中国开发者高效协作
  • 2025 年消防设施检测 / 电气防火检测 / 防雷装置检测 / 消防维保 / 环境检测服务公司推荐:北京市通雷防雷装置安全检测有限公司提供专业技术支持
  • 直播app开发,如何快速获取系统时间? - 云豹科技
  • 2025 年泡棉厂家最新推荐榜:全方位解析 EPE 泡棉 / EVA 泡棉 / 珍珠棉泡棉 / 泡棉内衬优质企业,助采购商精准选对品牌
  • C. awoos Favorite Problem
  • Outlook邮箱大附件邮件是什么?
  • 2025 年过滤机厂家最新推荐排行榜:胶带式 / 盘式真空 / 脱水 / 带式真空 / 水平带式过滤机企业权威选购指南
  • 国产代码管理平台Gitee:破解企业级Git自建难题的密钥
  • 2025 年蜂巢/高强/HDPE/PET/高分子/塑料/插接/土工格室厂家口碑推荐榜:聚焦品质与服务,助力工程选材更高效
  • 基于K近邻(KNN)算法在MATLAB中实现人脸识别
  • 2025 年最新推荐灭火器维修公司榜单:覆盖干粉 / 水基 / 二氧化碳 / 七氟丙烷 / 锂电池灭火器维修,帮您选到专业可靠服务单位
  • Vue大屏可视化自适应(等比列缩放)方案✔️✔️✔️✨
  • VonaJS AOP编程:全局中间件全攻略
  • 单调队列 (1) - 详解
  • 2025 年 密度 / 净化 / 零醛添加 / 装修 / 生态板 / 指接板板材厂家推荐:纯品梅花深耕高端定制,打造健康家居板材优质选择
  • 深入解析:考研复习-线性代数-第二章-矩阵
  • PHP 与 HTML 混写基础
  • 2025 年隧道/车丝/打孔/矿用/R780/钢花钢管厂家推荐榜:精准匹配施工需求,优选可靠供应商
  • 2025 年最新推荐!空压机租赁公司综合实力榜单:涵盖无油 / 高压 / 阿特拉斯等机型及二手买卖置换回收,助力企业精准选靠谱服务商
  • 小波神经网络(WNN)预测代码
  • 2025 年报警器厂家最新推荐权威榜单:海湾 / 青鸟 / 利达等品牌全覆盖,详解优质服务商助力安全选购NB烟感/松江烟感/三江烟感/燃气报警器厂家推荐
  • 优秀的研发经理,如何布局一周的工作?
  • Numerical Heat Transfer and Fluid Flow(《传热与流体流动的数值计算》)