docker基本介绍

什么是docker

docker是一个开源的容器平台,用于开发、交付和部署 运行应用程序

简单来说 也就是docke他允许开发者将自己的操作环境以及依赖关系打包成一个容器,移动到其他机器上可以供其他人使用,还可以打包成镜像,上传到网络,如果想使用可以随时拉下来。

doker的功能:

  • 资源隔离
  •  轻量级 占有少量资源
  •  一次部署 多处运行

为什么需要docker:

传统的开发问题:
  • 环境(切换/配置)麻烦:

在开发一个产品的途中,时长会出现的问题就是:“在我的电脑上可以运行,而到了另外一个开发人员的电脑上就不能使用的问题

  • 应用之间的冲突(隔离性):

假如我们将开发的两个应用部署到同一个服务器上,如果一个应用出现了问题,导致cpu出问题上升到100%,那么第二个应用也会受到关联

1、docker可以让开发者打包他们的应用以及依赖关系到一个轻量级、可移植的容器中,然后发布到任何流行的linux机器上,也可以实现虚拟化。将环境构建打包成一个镜像发布到网上,想要用这个环境的时候就直接拉取一份就ok了。

2、docker核心思想就是使用容器化技术,打包装箱,每个箱子是互相隔离的。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低

什么是容器化、什么是虚拟化:

虚拟化: 就是将多个相同的物理硬件或软件、虚拟成逻辑的一个整体 
               从而提高资源的利用率并打破物理设备不可分割的情况

容器:将应用程序包含运行环境整体打包成一个标准的应用单元
           实现应用的交付和部署
容器技术: 就是一种应用程序打包技术
容器化:一种将应用程序及其依赖项打包到一个独立、可移植的容器中的一个过程

docker带来的好处
  简化配置 代码流水线 提高开发效率 隔离应用
  整合服务  调试能力 快速部署  多租户环境

Docker的基本组成

镜像(image):docker镜像就好比是一个模板,可以通过这个模板来创建容器服务通过这个镜像可以创建多个容器

容器(container):docker利用容器技术,独立运行一个或者一组应用,通过镜像来创建的,启动、停止、删除、基本命令,目前就可以把这个容器理解为就是一个简易的Linux系统。

仓库(repository):仓库就是存放镜像的地方,仓库分为公有仓库和私有仓库

私有 Registry

  •        私有 Registry 通常用于企业内部或个人项目,需要身份验证才能访问。
    • 它可以是本地部署的服务,也可以是托管在云服务上的。

公开 Registry

  •        公开 Registry 任何人都可以访问,无需身份验证。
    • Docker Hub 是最著名的公开 Registry,提供大量的公共镜像供用户使用。

三者的关系:
 仓库是用来存放官方或者私人镜象的
 镜像 是容器运行的源文件
 容器 是运行的镜像 也是具体的应用

过程
从仓库pull拉去一个镜像到本地
run 一个本地镜像 就生成一个容器
容器 commit 就变成一个本地镜像
本地镜像push推送到仓库办成仓库中的镜像

docker  应用场景
   作为云主机使用
   作为服务使用
   做微服务架构使用

docker  特性
     实现交互式shell      
     文件系统隔离
     写时复制和联合文件系统
     资源和网络隔离
     日志记录和变更管理

容器和虚拟机之间的比较

容器 启动 秒级   硬盘使用 MB 级别  接近原生  单机支持上千个容器

 虚拟机  启动分钟级  硬盘GB级别  新能弱于容器   单机支持几十个虚拟机

Docker 架构设计

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

Docker是C/S(客户端client-服务器server)架构模式。

Docker通过客户端连接守护进程,通过命令向守护进程发出请求,守护进程通过一系列的操作返回结果。

Docker客户端可以连接本地或者远程的守护进程。

Docker客户端和服务器通过socket或RESTful API进行通信。

Docker 容器通过 Docker 镜像来创建,容器与镜像的关系类似于面向对象编程中的对象与类。

Docker 主要有以下几部分组成

Docker Client 客户端     通过命令行或者其他工具使用 Docker API

Docker daemon 守护进程   负责运行docker 内核

Docker Image 镜像  一个特殊的文件系统   用于创建 Docker 容器的模板

Docker 的特性

    交互式Shell:Docker 可分配一个虚拟终端并关联到任何容器的标准输入上

    文件系统隔离:每个进程容器运行在完全独立的根文件系统里

    写时复制:采用写时复制方式创建根文件系统,这让部署变得极其快捷,并且节省内存和硬盘空间

    资源隔离:可以使用 cgroup 为每个进程容器分配不同的系统资源

    网络隔离:每个进程容器运行在自己的网络命名空间里,拥有自己的虚拟接口和 IP 地址

    日志记录:Docker会收集 记录每个进程容器的标准流(stdout/stderr/stdin) 以实时检索或批量检索

    变更管理:容器文件系统的变更可以提交到新的映像中,并可重复使用以创建更多的容器

              无需使用模板或手动配置

Docker 提供服务的两个维度    (改变了软件的构建、交付和运行方式)

    更可靠地将应用从开发环境移动到生产环境。

    通过标准映像格式将软件从本地迁移至云端。

总结
docker:  一个开源的云应用容器平台, 一个轻量级的虚拟化解决方案

容器的三大组件
 仓库 registry 用来存放镜像
 镜像 image  软件和运行环境打包后的自读文件
 容器 container 运行的镜像

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/420482.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于yolov8的血细胞检测计数系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的血细胞检测与计数系统是一种利用深度学习技术,特别是YOLOv8目标检测算法,实现高效、准确血细胞识别的系统。该系统能够自动识别并计数图像或视频中的血细胞,包括红细胞、白细胞和血小板等,为医疗诊断提…

硬件工程师笔试面试——MOS管

目录 8、MOS管 8.1 基础 MOS管原理图 MOS实物图 8.1.1 概念 8.1.2 特点 8.1.3 类型 7.2 相关问题 7.2.1 MOS管在不同应用中的阈值电压和最大漏极电流通常是多少? 7.2.2 如何根据电路设计选择合适的MOS管类型? 7.2.3 MOS管在高频应用中的优势是什么,它如何影响电路…

那些你不知道的3个comfyui小技巧,分享给大家!

前言 掌握一些小技巧,提升效率! 1、图像选择器 出图批次是四张,然后想选一张图进入到之后的工作流,就可以用这个节点 默认是这样的 运行到这个节点的时候,会出现四张图片,选中满意的图片,点…

探索自闭症全托学校的独特魅力与特色

在自闭症儿童的教育与康复领域中,全托学校以其独特的魅力和特色,逐渐成为众多家庭的首选。这类学校不仅为自闭症儿童提供了稳定、持续且专业的成长环境,还通过一系列科学有效的教育方法和康复手段,帮助他们逐步克服障碍&#xff0…

【1】OpenCV虚拟环境搭建

文章目录 OpenCV虚拟环境搭建(一)安装anaconda(二)anaconda修改虚拟环境默认位置STEP1:找到C:\Users\你的用户名下的.condarc文件STEP2:修改指定文件夹的权限(重点) (三&…

Cortex-M3架构学习:存储器系统

存储系统功能 CM3 的存储器系统与从传统 ARM 架构的相比,进行如下改革: 它的存储器映射是预定义的,并且还规定好了哪个位置使用哪条总线。 CM3 的存储器系统支持所谓的“位带”(bit-band)操作。通过它,实…

同时安装多个nodejs版本可切换使用,或者用nvm管理、切换nodejs版本(两个详细方法)

目录 一.使用nvm的方法: 1.卸载nodejs 2.前往官网下载nvm 3.安装nvm 4.查看安装是否完成 5.配置路径和淘宝镜像 6.查看和安装各个版本的nodejs 7.nvm的常用命令 二.不使用nvm,安装多个版本: 1.安装不同版本的nodejs 2.解压到你想放…

【Python】从基础到进阶(二):了解Python语言基础以及数据类型转换、基础输入输出

🔥 个人主页:空白诗 文章目录 一、引言二、基本数据类型转换1. 隐式转换2. 显式转换 三、基本输入输出1. 输入(input)2. 输出(print)3. 案例:输入姓名、年龄、身高以及体重,计算BMI指…

猎板通信PCB动态:苹果16系列多款设备上线,PCB供应商的机遇与挑战!

在最新的苹果供应链动态中,苹果公司对于PCB供应商的选择标准非常严格,主要考虑因素包括技术能力、生产规模、质量控制、成本效益、供应链稳定性以及环境和社会责任等。随着苹果产品技术的不断进步,PCB供应商也需要具备相应的技术升级能力&…

基于vue框架的成都住房租赁系统82ml7(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:用户,房东,房屋类型,房源信息,租赁信息,合同信息,租金缴纳 开题报告内容 基于Vue框架的成都住房租赁系统开题报告 一、引言 随着城市化进程的加速和人口流动的日益频繁,成都作为西南地区的经济、文化中心,住房…

关于OceanBase 多模一体化的浅析

在当今多元化的业务生态中,各行各业对数据库系统的需求各有侧重。举例来说,金融风控领域对数据库的高效事务处理(TP)和分析处理(AP)能力有着严格要求;游戏行业则更加注重文档数据库的灵活性和性…

【笔记】408刷题笔记

文章目录 三对角三叉树求最小带权路径UDP报文首部和TCP报文首部IP报文首部TCP报文首部UDP报文首部 刷新和再生的区别地址译码 为了区分队空队满,可以使用三种处理方式 1)牺牲一个单元 队头指针在队尾指针的下一位置作为队满的标志 队满条件:(…

make、cmake、qmake的区别和联系

基本概念与用途 make: 定义:make是一个用于自动化构建项目的命令行工具。用途:它通过读取Makefile(或makefile)文件来执行编译、链接等操作,从而构建整个项目。Makefile中定义了项目中的文件依赖关系以及…

“CSS 定位”如何工作?(补充)——WEB开发系列34

CSS定位是一个非常重要的布局工具,它允许我们精确地控制元素的位置,从而创建复杂的布局效果。定位允许你从正常的文档流布局中取出元素,并使它们具有不同的行为,例如放在另一个元素的上面,或者始终保持在浏览器视窗内的…

数据库设计中的需求分析

在数据库设计中,需求分析 是至关重要的一步。它不仅是设计过程的起点,也是后续步骤的基础。如果需求分析出现问题,那么后续所有设计阶段的结果都会受到影响,最终可能导致整个设计返工,耗费大量时间和资源。因此&#x…

KubeBlocks 如何降低管理多种数据库的学习门槛

什么是 KubeBlocks KubeBlocks 是一个开源的 Kubernetes 数据库 operator,能够帮助用户在 Kubernetes 上运行和管理多种类型的数据库。据我们所知,大多数数据库 operator 通常只能管理某种特定类型的数据库,例如: CloudNativePG…

基于SSM开发的校园心理咨询平台系统的设计与实现---附源码80915

目 录 1 绪论 1.1 研究背景 1.2开发现状 1.3论文结构与章节安排 2 校园心理咨询平台系统系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系统用例分析 2.4…

安卓13删除app 链接库警告弹窗Detected problems with app native

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码修改彩蛋1.前言 有些客户的APP,打开首次会弹窗提示窗口, Detected problems with app native libraries (please consult log for detail):,需要删除这个窗口,避免挡住用户APP。而且这个提示有些app是以t…

MapBox Android版开发 4 国际化功能v11

MapBox Android版开发 4 国际化功能v11 前言遇到的问题国际化功能原文给出的方案(V10版)migrate-to-v11适用于V11版的代码 示例MapStyle类运行效果图 前言 在前文MapBox地图样式v11中,使用Style的localizeLabels方法本地化地图语言。但Mapbox Standard样式和Mapbox…

红队C2工具Sliver探究与免杀

吉祥知识星球http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247485367&idx1&sn837891059c360ad60db7e9ac980a3321&chksmc0e47eebf793f7fdb8fcd7eed8ce29160cf79ba303b59858ba3a6660c6dac536774afb2a6330&scene21#wechat_redirect 《网安面试指南》…