当前位置: 首页 > 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.lryc.cn/news/596464.html

相关文章:

  • Taro 网络 API 详解与实用案例
  • 闲庭信步使用图像验证平台加速FPGA的开发:第三十课——车牌识别的FPGA实现(2)实现车牌定位
  • STM32-第十节-DMA直接存储器存取
  • Collection接口的详细介绍以及底层原理——包括数据结构红黑树、二叉树等,从0到彻底掌握Collection只需这篇文章
  • Class10简洁实现
  • IDEA-自动格式化代码
  • 嵌入式 Qt 开发:实现开机 Logo 和无操作自动锁屏
  • C语言面向对象编程
  • linux 环境服务发生文件句柄泄漏导致服务不可用
  • 自定义HAProxy 错误界面
  • 开发板系统烧写
  • 【数学建模|Matlab】Matlab「基础知识」和「基础操作」
  • Vue3 面试题及详细答案120道(31-45 )
  • Arraylist与LinkedList区别
  • MATLAB软件使用频繁,企业如何做到“少买多用”?
  • 论文略读:Towards Safer Large Language Models through Machine Unlearning
  • Go 的第一类对象与闭包
  • (二)Python基础入门-基础语法核心
  • 【Python】常见模块及其用法
  • 解决栅格数据裁剪矢量数据问题两种方法,ArcGIS解决与PYTHON解决
  • Leetcode力扣解题记录--第41题(原地哈希)
  • 力扣-300.最长递增子序列
  • LeetCode 633.平方数之和
  • Uni-App:跨平台开发的终极解决方案
  • uniapp app打包流程
  • 《Uniapp-Vue 3-TS 实战开发》自定义预约时间段组件
  • Java (Spring AI) 实现MCP server实现数据库的智能问答
  • MS523NA非接触式读卡器 IC
  • 【金融机器学习】第四章:风险-收益权衡——Bryan Kelly, 修大成(中文翻译)
  • 【方案】网页由微应用拼图,微前端