什么是docker?小白也能看懂!

news2024/11/22 21:41:34

在这里插入图片描述

👏大家好!我是和风coding,希望我的文章能给你带来帮助!
🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦
📝点击 我的主页 还可以看到和风的其他内容噢,更多内容等你来探索!
📕欢迎参观我的个人网站:Gentlewind

在这里插入图片描述


文章目录

    • Docker简介
      • 什么是Docker?
      • 为什么要使用Docker?
    • Docker和虚拟机的区别
    • Docker的核心概念
    • Docker的安装
    • Docker的体系结构
    • 容器化和Dockerfile


Docker简介

什么是Docker?

Docker是一个用于构建(build),运行(run),传送(share)应用程序的平台

  • 它可以将我们的应用程序连同运行时环境,依赖包和第三方软件库,配置文件等等打包成"集装箱",通过这个小鲸鱼(也就是Docker)运输到我们需要的地方
image-20240131112548667

为什么要使用Docker?

假如我们现在想要搭建一个目前主流的前后端分离项目

image-20240131112718072

我们将使用到:

  • 前端Vue:搭建网站的界面
  • 后端SpringBoot:提供各种服务以及接口
  • 数据库MySQL:来存储数据

而假如我们没有Docker,我们的操作步骤是:

  1. 安装NodeJS环境
  2. 安装各种npm依赖
  3. 安装Java运行时环境
  4. 安装各种第三方依赖
  5. 安装MySQL数据库
  6. 配置环境变量
  7. 启动各种脚本,服务

这样才能将我们的项目运行起来😢

而如果项目再大一点,我们还需要:

  1. 安装配置Redis缓存
  2. 安装配置Nginx负载均衡
  3. 以及各种微服务框架…

是不是已经感觉到头大了?别急,还没完!因为这还只是在开发环境

如果到了测试环境,那么我们需要在新的环境重头再来一遍!

而如果有了Docker

那么我们只需要把应用装进集装箱,如果你在开发环境运行成功了,那么运输到测试环境也是可以运行成功的

image-20240131113639961

Docker和虚拟机的区别

相信大家应该都用过这些常见的虚拟机软件

image-20240131113749297

  • 这是通过一种叫做虚拟化的技术来实现的

虚拟化技术

是一种可以将物理资源虚拟为多个逻辑资源的技术。它可以将一台物理服务器虚拟为多个逻辑服务器,每个逻辑服务器都有自己的操作系统,cpu、内存、硬盘、网络接口等等。它们之间是完全隔离的,可以独立运行

作用:可以将一台服务器的计算能力,存储能力,网络资源分配多台虚拟服务器,实现多台服务器的功能

缺点:每台虚拟服务器都需要占用大量计算机资源,且启动速度慢。并且在实际应用中,我们使用的往往是操作系统的一个功能,却需要启动整个操作系统,造成资源的浪费

了解了虚拟机之后,我们再来看一下容器技术

容器

注意:Docker和容器是两个概念,Docker只是容器的一种实现,是一个容器化的解决方案和平台;而容器也是一种虚拟化技术,和虚拟机类似,是一个独立的环境。

和虚拟机不同的是:容器不需要启动整个操作系统,而是利用宿主机的操作系统,因此启动速度非常快,占用资源也非常少,减少了资源的闲置和浪费。

image-20240131115352900

Docker的核心概念

学习Docker的关键,是要理解Docker中的这几个概念:

  • 镜像
  • 容器
  • 仓库

**镜像:**是一个只读的模板,用来创建容器

**容器:**是Docker的运行实例,提供了一个独立的可移植的环境,可以在这个环境中运行应用程序

💡等等,听到这里,你是否觉得很熟悉?

没错,如果你学习过Java,你会发现镜像和容器的关系,就像Java中类和实例的关系一样。

  • 我们可以定义一个类中有多个属性和方法,这个定义好的类就是一个模板,我们可以根据这个模板创建多个实例,这些实例就是这个类的对象。

  • 对应到Docker中:镜像就是这样一个模板,而容器就是实例,容器可以有多个。

  • 而如果你没接触过Java,我们举个生活中的例子:镜像就类似一个食谱,我们可以根据这个食谱做出多个一模一样的菜出来(也就是创建多个容器),如果你把食谱分享给你的朋友,那么你的朋友也可以做出同样的菜出来。

那么如何将食谱分享给别人呢?这就要用到仓库

**仓库:**是用来存储镜像的地方

目前最流行的Docker公共仓库是Dockerhub,用来集中存储和管理Docker镜像,我们可以在这里下载各种镜像,也可以将自己的镜像上传到这里。这样就实现了镜像的共享和复用

拿刚刚的话来说,如果你发明了一道非常美味的菜肴,你就可以上传食谱到Docker仓库中,这样别人就可以根据这个食谱做出一模一样的菜肴了

Docker的安装

直接在浏览器搜索Docker,进入官网点击下载即可,下载后需要重启

image-20240131144859808

唯一需要注意的是如果是在Windows上安装需要开启虚拟化,如何开启可自行百度

image-20240131151053367

Docker的体系结构

image-20240131153732547

Docker使用client-server架构模式。客户端通过Socket或RESTful API与Docker daaemon进行通信

Docker daaemon是Docker服务端的守护进程,管理Docker的各种资源,又是后台进程,对客户端发送的请求进行处理,并将处理结果返回给客户端

我们在命令行发出的Docker命令都是有它处理返回给客户端的

容器化和Dockerfile

将应用程序打包成一个容器,然后在容器中运行应用程序的过程

它有三个步骤:

  1. 创建一个Dockerfile(来告诉Docker构建镜像所需要的步骤和配置)
  2. 使用Dockerfile构建镜像
  3. 使用镜像创建和运行容器

Dockerfile

就是一个文本文件,用来告诉Docker如何构建镜像。里面包含了我们应用环境所需要的所有命令,例如npm run,各种依赖,第三方库,环境变量等等

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是低代码?低代码开发和零代码开发的区别?

随着数字化时代的到来,企业对于软件开发的需求日益增长。为了提高开发效率和降低成本,越来越多的企业开始关注低代码和零代码平台,为没有编程背景的用户提供了创建应用程序的能力,极大地简化了开发过程。本文将什么是低代码&#…

企业实现数字化转型到底靠什么?5分钟给你讲明白数字化管理!

在数字化浪潮的推动下,企业数字化转型已不再是选择题,而是企业生存和发展的必答题。各种企业纷纷投入资源,采购各类数字化工具,希望能够借此步入数字化的大门。但是,是不是只要全面升级数字化工具,数字化转…

前端Web-JavaScript(上)

要想让网页具备一定的交互效果,具有一定的动作行为,还得通过JavaScript来实现, 这门语言会让我们的页面能够和用户进行交互。 什么是JavaScript JavaScript(简称:JS) 是一门跨平台、面向对象的脚本语言,是…

软件安全测试内容和方法大揭秘,湖南软件测评公司推荐

在当今信息社会飞速发展的背景下,软件的安全性问题愈发引起人们的重视。软件安全测试,作为提升软件安全性的重要环节,成为众多企业不可或缺的工作之一。 一、软件安全测试的定义与必要性   软件安全测试是指通过对软件进行系统性、全面性的…

gpt分区怎么修复引导?gpt分区修复引导多种方法

随着uefigpt(guid)分区的流行,越来越多的小伙伴经常遇到gpt分区引导丢失的情况,也不知道怎么修复,以前的一些修复工具都只能修复mbr格式下的硬引导,但对于gpt分区引导不是很清楚,gpt分区引导主要是靠分区中的esp分区来…

【IO】使用两个线程完成两个文件的拷贝,分支线程1拷贝前一半,分支线程2拷贝后一半,主线程回收两个分支线程的资源

不是哥们,脑子都烧起来了 1、使用两个线程完成两个文件的拷贝,分支线程1拷贝前一半,分支线程2拷贝后一半,主线程回收两个分支线程的资源 思路: 1、首先创建了求文件长度的函数,在创建函数的时候&#xff…

短剧CPS分销系统框架+资源对接是怎么对接的?

目录 前言: 一、前端uniapp内容有什么? 二、后台管理 三、搭建CPS需要准备什么? 总结: 前言: 目前短剧目前在国内是非常的热门,观看的人群非常的多。如果希望能够通过推广短剧来做副业的话&#xff0c…

初阶数据结构.排序(2.2冒泡排序)

本节大纲: 冒泡排序 1.冒泡排序的思想 2.冒泡排序的特性 3.冒泡排序的实现 1.冒泡排序的思想 冒泡排序:是交换排序的一种,所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序…

GenAI 会消灭软件开发人员的工作吗?

软件开发人员、程序员和编码员之间最大的争论之一是,人工智能会抢走我的工作吗?是的!答案是肯定的;人工智能会抢走并取代你的工作。人工智能可能不会自己取代你,而是被使用人工智能的人取代。 我向 ChatGPT 提出了同样…

springboot银行客户管理系统代码--论文源码调试讲解

2 相关技术 2.1 MySQL数据库 MySQL是一种具有安全系数、安全系数、混合开发性、高效化等特征的轻量关联数据库智能管理系统。MySQL由C语言和C语言构成,由于C语言和C语言是混合开发的,因此MySQL源码是生命期的。MySQL提供多种多样数据种类,常…

机器学习----神经网络技术详解

机器学习中的神经网络 1. 引言1.1 机器学习的概述1.2 神经网络的重要性和应用领域1.2.1 神经网络的基本概念1.2.2 神经网络的应用领域 2. 神经网络的基础知识2.1 神经网络的定义人工神经网络(ANN)的基本概念神经元的结构与功能 2.2 神经网络的历史背景早…

27、Python之面向对象:方生方死?对象生命周期是如何管理的

引言 前面关于面向对象的几篇文章,其实主要围绕着面向对象的第一个核心理念——封装,进行面向对象的介绍。从类、对象的静态构成的角度,对类与对象的定义及使用进行介绍。 在进入面向对象另外两个理念的介绍之前,我觉得有必要对…

回调函数和qsort,strcmp函数

有任何不懂的问题可以评论区留言,能力范围内都会一一回答 1.回调函数是什么? 回调函数就是一个通过函数指针调用的函数。 如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向…

【LLM大模型】GraphRAG入门学习流程

GraphRAG GraphRAG 是一种基于图的检索增强方法,由微软开发并开源。它通过结合LLM和图机器学习的技术,从非结构化的文本中提取结构化的数据,构建知识图谱,以支持问答、摘要等多种应用场景。GraphRAG的特色在于利用图机器学习算法…

7、springboot3 vue3开发平台-后端-获取用户菜单,构建菜单树列表

1. 获取用户信息并 从用户session 中获取用户信息 Operation(summary "查询当前用户菜单")GetMapping("/getSelfMenu")public Result<List<RouterVO>> getSelfMenu() {UserInfo userLoginInfo (UserInfo) StpUtil.getSession().get("u…

【Docker系列】Docker 中-d 和-it 的区别

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Python开发: 飞机大战 小游戏

玩法 你可以控制飞机左右移动,躲避敌机子弹,同时发射自己的炮弹,将敌人击落! 部署方案: 1、代码如下图; 2、将代码保存到一个python中,比如planeFight.py; 3、在你的电脑中安装python环境,然后使用命令:“py planeFight.py” 运行这个文件即可; 代码 import p…

大模型深度神经网络(Deep Neural Network, DNN)

大模型深度神经网络&#xff08;Deep Neural Network, DNN&#xff09;是一种复杂的机器学习模型&#xff0c;其特点在于包含多个隐藏层&#xff0c;从而赋予模型强大的非线性表达能力和对复杂数据模式的学习能力。以下是对大模型DNN的详细介绍&#xff1a; 一、基本概念 深度…

机器学习之贝叶斯方法

机器学习之贝叶斯方法 1. 贝叶斯定理基础1.1 贝叶斯定理公式1.2 先验概率 (Prior Probability)1.3 后验概率 (Posterior Probability)1.4 似然 (Likelihood)1.5 证据 (Evidence)1.6 贝叶斯定理的应用实例 2. 贝叶斯方法的基本概念2.1 条件概率 (Conditional Probability)2.2 全…

为什么康耐视visionpro的C#二次开发调用的recorddisplay控件偶尔会显示白色的,偶尔又正常了?

recorddisplay控件正常显示 异常显示 原因分析&#xff1a; 没有完全加载recorddisplay控件&#xff0c;有可能是有bug没有完全加载&#xff0c;打断点调试控件是否完全加载。