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

Docker容器 介绍

初识 Docker

问题现象

在传统的项目开发流程中,我们写的代码会接触到好几个环境,如开发环境、测试环境以及生产环境。

  • 问题:“水土不服”。即不同环境可能由于依赖版本或配置的不同,导致应用在不同环境的表现不同。如下图所示(JDK 版本不同):

    image

  • 解决方案:在开发环境将应用所依赖的环境和配置一起打包(容器技术),统一流转给测试环境和生产环境。

    image

什么是 Docker ?

image

  • Docker 是一个开源的应用容器引擎。
  • 诞生于 2013 年初,基于 Go 语言实现, dotCloud 公司出品(后改名为 Docker Inc)。
  • Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上。
  • 容器是完全使用沙箱机制,相互隔离。
  • 容器性能开销极低。
  • Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版)

Docker 优点

  1. 快速交付应⽤:加快打包时间,加快测试,加快发布,缩短开发及运⾏代码之间的周期。
  2. 复杂环境管理,应⽤隔离:不同软件运⾏环境兼容依赖问题,开发环境/测试环境/线上环境保持⼀致。
  3. 轻量级:对于系统内核来说,⼀个 Docker 容器只是⼀个进程,⼀个系统可以运⾏上千个容器。

Docker 架构与核心概念

image

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。

  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和对象一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

Docker 容器 VS 虚拟机

image

相同点

  • 容器和虚拟机具有相似的资源隔离和分配优势。

不同点

  • 容器与容器之间只是进程的隔离;⽽虚拟机是完全的资源隔离。
  • 虚拟机的启动可能需要分钟级别;容器启动是秒级或者更短。
  • 容器使⽤宿主操作系统的内核,因此只能运行同一类型操作系统;⽽虚拟机使⽤完全独⽴的内核,因此可以运行不同的操作系统。
特性 容器 虚拟机
启动 秒级 分钟级
硬盘使用 一般为 MB 一般为 GB
性能 接近原生 弱于
系统支持量 单机支持上千个容器 一般几十个

Linux 容器详解

什么是 Linux 容器?

Linux 容器是与系统其他部分隔离开的一系列进程,从一个镜像运行起来,并由该镜像提供支持进程所需的全部文件。

  • 容器:将软件打包成
http://www.dtcms.com/a/291770.html

相关文章:

  • Maven 环境配置全攻略:从入门到实战
  • Kafka灰度方案
  • 两个android,一个客户端一个服务器端
  • 【菜狗学聚类】时间序列聚类主要方法—20250722
  • zmaiFy来说软字幕和硬字幕有什么优缺点?
  • 【LINUX】CentOS Stream 9 手动配置网络
  • [hot 100]两数之和-Python3-Hash Table
  • 归一化 vs 标准化:数据预处理终极指南
  • Matplotlib绘制各种图参考
  • 力扣刷题 -- 101.对称二叉树
  • JAVA API (三):从基础爬虫构建到带条件数据提取 —— 详解 URL、正则与爬取策略
  • 【网工】学而思:生成树协议STP原理与应用
  • 美团视觉算法面试30问全景精解
  • Java内部类与Object类深度解析
  • 高层功能架构详解 - openExo
  • GitHub新手生存指南:AI项目版本控制与协作实战
  • 医院信息系统(HIS)切换实施方案与管理技术分析
  • 静态登录界面
  • Mosaic数据增强介绍
  • 《C++初阶之STL》【string类:详解 + 实现】
  • 【React 入门系列】React 组件通讯与生命周期详解
  • Redis 初识
  • SpringMVC快速入门之核心配置详解
  • 【安卓笔记】用MVC、MVP、MVVM来实现井字棋案例
  • 厌氧菌数据挖掘可行性评估报告
  • 【Spark征服之路-3.7-Spark-SQL核心编程(六)】
  • 解决栅格数据裁剪矢量数据问题两种方法,ArcGIS解决与PYTHON解决
  • Ajax第一天
  • uniapp各大平台导航组件
  • Taro 网络 API 详解与实用案例