简单的docker学习 第1章 docker 概述

news2024/11/14 14:13:49

Docker 学习笔记

本文是b站动力节点docker学习视频的笔记整理,主要用于自己学习复习使用,视频具体地址为 : 动力节点docker

第一章 docker 概述

1.1 课程引人入

1.1.1 开发/运维互掐

​ 开发与测试和运维间的矛盾,主要是由于环境的不同而引发的。如果能将开发人员使用的环境交给测试与运维使用,这些问题就都能解决

1.1.2 DevOps

​ DevOps 是一种思想,是一种管理模式,是一种执行规范与标准。它主要是用于促进开发、测试与运维部门间的沟通、协作与整合。

DevOps

1.1.3 运维对架构师的抱怨

​ 运维总是希望,如果能搞个一键部署,一下搞定就好了。

1.1.4 学习中集群搭建的问题

​ 在学习过程中,由于机器配置较低从而导致启动的虚拟机较少,影响学习效率。

1.2 Docker 简介

​ Docker 是一个开源的应用容器 Container 引擎, 其可以让开发者将应用及应用运行的环境打包到一个轻量级、可移植的镜像中,然后发布到任何流行的 Linux、Windows 机器上。Docker 原本是由一个 PaaS 提供商 dotCloud 公司的创始人 Solomon Hykes 发起的一个内部项目,是基于其多年云服务技术的一次革新,使用 Go 语言开发。2013 年 3 月开源,并在 GitHub 上进行维护。后由于 Docker 项目的火爆,2013 年底,dotCloud 公司更名为 Docker,公司域名也变更为了 https://docker.com。

云计算中的服务包括三个层次:IaaS、PaaS、SaaS。

1.3Docker 的用途

1.3.1 提供统一的运行环境

​ 在生产环境中,很多时候的开发、测试及上线环境都是不一样的,从而导致项目(war或 jar)在不同阶段出现很多其它阶段所不存在的奇怪的问题。Docker 容器除了可以提供相同的应用外,还提供了该应用的统一运行环境,确保在任何宿主机 HOST 上都可以跑出相同的结果。即 Docker = jar/war + 环境。

1.3.2 便捷的应用迁移

​ 由于 Docker 确保了统一的运行环境,使得应用的迁移更加便捷。无论是物理机、虚拟机、公有云、私有云,Docker 镜像的运行结果都是相同的。用户可以很方便地将一个平台上运行的应用,迁移到另一个平台上,而无需担心运行环境的变化导致应用无法正常运行。

1.3.3 超快的启动时间

​ 传统的虚拟机技术启动应用一般需要数分钟:首先需要启动虚拟机,然后再加载虚拟机操作系统,最后还需要再手工启动应用。而 Docker 容器应用,由于直接运行于宿主机系统中,无需启动操作系统,因此可以做到秒级、甚至毫秒级的启动。

1.3.4 更轻松的维护和扩展

​ Docker 公司及各个开源项目团队一起维护了一大批高质量的官方镜像,既可以直接在生产环境使用,又可以作为基础进一步定制,大大的降低了应用服务的镜像制作成本。Docker 使用的分层存储以及镜像的技术,使得应用重复部分的复用更为容易,也使得应用的维护更新更加简单,基于基础镜像进一步扩展镜像也变得非常简单

1.4容器与虚拟机的区别

​ Docker 容器的本质就是通过容器虚拟技术虚拟出的一台主机,就像虚拟机一样。可以将应用及其运行环境部署在这台虚拟出的主机上运行。但容器与虚拟机又有着本质的不同。

1.4.1 普通系统中的程序运行原理

​ 程序是一个对计算机硬件资源调度使用的指令序列。

image-20240704143401900

1.4.2 传统虚拟技术

​ 传统的虚拟技术是在物理机的操作系统之上安装一个虚拟机管理程序,例如 VMware、VirtualBox 等。在其管理下可以创建很多个虚拟机。每个虚拟机需要安装自己独立的操作系统,而应用就是安装在虚拟机操作系统之上的程序,应用程序通过调用各种命令或库函数来使用其需要的各种系统资源。

​ 对于完全相同的两个应用,其若需要运行在两个虚拟机中,则就需要两套完全相同的虚拟机操作系统与 bins/libs,存在大量的资源占用冗余。形成资源浪费。

image-20240704143420349

1.4.3 容器虚拟化技术

​ Docker 容器运行在 Docker 引擎之上,所有 Docker 容器共享同一个 Docker 引擎,但它们的运行又是相互隔离、互不干扰的。由于 Docker 容器不需要进行虚拟硬件及操作系统,而是共享的宿主机的硬件与操作系统,所以 Docker 容器对系统资源的占用很少,其仅包含运行时必须的一些资源。所有 Docker 容器对于系统资源的使用都是由 Docker 引擎统一进行管理,所以对系统资源的利用率很高。无论是应用执行速度、内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。

1.5 Windows 系统的虚拟化

1.5.1 Hypervisor

​ Hypervisor——一种运行在基础物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件。也可叫做 VMM( virtual machine monitor ),即虚拟机监视器。Hypervisors 是一种在虚拟环境中的“元”操作系统。他们可以访问服务器上包括磁盘和内存在内的所有物理设备。Hypervisors 不但协调着这些硬件资源的访问,也同时在各个虚拟机之间施加防护。当服务器启动并执行 Hypervisor 时,它会加载所有虚拟机客户端的操作系统同时会分配给每一台虚拟机适量的内存,CPU,网络和磁盘。

1.5.2 Hyper-V

​ Hyper-V 是微软的一款虚拟化产品,是微软第一个采用类似 Vmware ESXi 和 Citrix Xen 的基于 hypervisor 的技术。这也意味着微软会更加直接地与市场先行者 VMware 展开竞争,但竞争的方式会有所不同。Hyper-V 是微软提出的一种系统管理程序虚拟化技术,能够实现桌面虚拟化。Hyper-V 是微软提供的商业化的 Hypervisor。KVM 与 Xen 都是 Linux 系统之上的开源的Hypervisor。

image-20240704143619566

1.5.3 现在的 Windows 系统

​ 现在的 Windows 系统并不是一个“纯洁”的 windows 了,而是运行在 Hyper-V 上的虚拟机。而原来的应用层现在也是一个运行在 Hyper-V 上的虚拟机。系统上运行的一个个的应用,其实就是运行在应用层虚拟机之中。操作系统虚拟机能够管理应用层虚拟机。

image-20240704143732406

1.5.4 windows 的启动

image-20240704143745614

1.5.5 VMware Windows 系统

​ VMware 采用的是 VMM 虚拟化技术,该技术要求直接访问 CPU 硬件的虚拟化功能。但VMware 作为 windows 系统中的应用,是运行在应用层虚拟机中的。导致 VMware 无法直接访问 CPU 硬件虚拟化功能。所以在安装 VMware Workstation 时会出现 VMware Workstation与 Hyper-V 不兼容的问题。

​ 从 VMware Workstation 15.5.5 版本开始,VMware 重构了 VMM 技术,使其不需要直接访问 CPU 硬件,而是通过调用 Windows10 系统的 WHP 的 API 来运行。这样就解决了不兼容的问题。

结论:我们在安装 VMware Workstation 时,要安装 15.5.5 版本或更高版本,而 Windows系统也要使用 Windows10 或更高版本。

1.6Docker 系统架构

​ Docker中具有几个非常重要的概念,下面通过理解这些概念来了解Docker的系统架构。客户端,宿主机,

image-20240704143922190

1.6.1 Docker Daemon

​ Docker Daemon,即 Dockerd,Docker 守护进程,其监听着 Docker API 请求并管理 Docker对象,例如镜像、容器、网络和卷。守护进程还可以与其他守护进程通信以管理 Docker 服务。

1.6.2 镜像 Image

​ Docker 镜像是用于创建 Docker 容器的模板。就像面向对象编程中的类。

1.6.3 容器 Container

​ Docker 容器是镜像运行时的实体。就像面向对象编程中类的实例。一个类可以创建出 N多个实例,那么一个镜像同样也可以创建出 N 多个容器。每个处于运行状态的容器中都包含着一个或多个相关的应用,且它的运行不会干扰到其它容器。因为它们之间是相互隔离的。

1.6.4 仓库 Repository

​ Docker 镜像仓库用来保存相关的一组镜像,这组镜像具有相同的镜像名称,都与镜像仓库名称相同。仓库根据其中的镜像是否可以被公开共享,可以分为公开库与私有库。

1.6.5 标签 Tag

​ 通过<repository>:<tag>即可唯一定位一个镜像。即镜像标签其实就是镜像仓库中用于区分各个镜像的一种标识,同一仓库中的镜像具有不同的标签。

1.6.6 镜像中心 Registry

​ Docker 的镜像中心中存放着很多由官方、其他机构或个人创建的 Docker 仓库,Docker用户可以直接从这些仓库中 pull 需要的镜像,也可以将自己制作的镜像 push 到 Docker 镜像中心相应的仓库中。最常用的镜像中心是Docker官方的Docker Hub

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

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

相关文章

flutter 做代码混淆

第一种、手动混淆 修改代码中出现次数多的 类目 方法 。修改静态资源的名字&#xff0c;转静态资源为webp 第二种、使用flutter 自带的命令行工具进行混淆 混淆 Dart 代码 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 使用pragma(vm:entry-point) 装饰器修改方…

【界面开发实战】使用DevEco Studio编写支付宝首页

效果展示 知识点 层叠布局 上一篇文章已经介绍了&#xff0c;这篇文章中不再赘述&#xff0c;如果想了解的话可以去看上一篇文章&#xff0c;链接如下&#xff1a; http://t.csdnimg.cn/CnBZMhttp://t.csdnimg.cn/CnBZM 弹性布局 作用&#xff1a;提供更加有效的方式对容器…

YOLOV5 改进:替换backbone为MobileVIT

1. 介绍 yolov5替换主干网络的步骤如下,依旧和之前的一样 2. 更改common文件 将下面代码加入common最下面即可: from einops import rearrange import torch import torch.nn as nn# Transformer Attention模块定义 class TAttention(nn.Module):def __init__(self, dim, …

string的底层简单实现(造轮子)

文件&#xff1a;String.h ----- 头文件 String.cpp ----- 源文件 Test.cpp ----- 源文件 实现细节&#xff1a; 实现带参构造&#xff1a; 在实现带参构造建议不使用初始化列表&#xff0c;初始化去写不太好&#xff1a; :_str(new char[strlen(str)1]) 用初始化列表要在…

如何在 Jupyter Notebook 中直接设置全局随机种子的方法及易错地方、notebook和pycharm中设置随机种子的区别

结论&#xff1a; 在 Jupyter Notebook 中直接设置全局随机种子的方法是确保每个单独的代码块中都调用相同的 set_seed 函数。这是最简单且有效的方法。在每个代码块开头设置随机种子&#xff0c;确保代码在每次执行时具有相同的随机数生成顺序。 易错地方&#xff1a; …

mac配置git的sshkey

在MAC中配置Git的SSH Key&#xff1a; 1.打开终端 2.生成SSH密钥&#xff0c;输入以下命令&#xff1a; ssh-keygen -t rsa -b 4096 -C “你自己的账号电子邮件地址” 按回车键后&#xff0c;系统会提示你输入文件保存路径&#xff0c;默认为~/.ssh/id_rsa直接按回车键使用默…

数据结构初阶之排序(上)

排序的概念及其应用 排序的概念 排序&#xff1a;所谓排序&#xff0c;就是使⼀串记录&#xff0c;按照其中的某个或某些关键字的⼤⼩&#xff0c;递增或递减的排列起来的操作。 排序的应用 如下图&#xff1a; 样例数组 下面我们给出一组乱序的数组&#xff0c;接下来的算…

程序员进阶架构知识体系、开发运维工具使用、Java体系知识扩展、前后端分离流程详解、设计模式开发实例汇总专栏分享

场景 作为一名开发者&#xff0c;势必经历过从入门到自学、从基础到进阶、从学习到强化的过程。 当经历过几年企业级开发的磨炼&#xff0c;再回头看之前的开发过程、成长阶段发现确实是走了好多的弯路。 作为一名终身学习的信奉者&#xff0c;秉承持续学习、持续优化的信念…

GitHub推出全新AI模型平台:简化开发者体验

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

《计算机网络》(第8版)第8章 互联网上的音频/视频服务 复习笔记

第 8 章 互联网上的音频/视频服务 一、概述 1 多媒体信息的特点 多媒体信息&#xff08;包括声音和图像信息&#xff09;最主要的两个特点如下&#xff1a; &#xff08;1&#xff09;多媒体信息的信息量往往很大&#xff1b; &#xff08;2&#xff09;在传输多媒体数据时&a…

【网络】TCP协议——TCP连接相关、TCP连接状态相关、TCP数据传输与控制相关、TCP数据处理和异常、基于TCP应用层协议

文章目录 Linux网络1. TCP协议1.1 TCP连接相关1.1.1 TCP协议段格式1.1.2 确定应答(ACK)机制1.1.3 超时重传机制 1.2 TCP连接状态相关1.2.1 TIME_WAIT状态1.2.2 CLOSE_WAIT 状态 1.3 TCP数据传输与控制相关1.3.1 滑动窗口1.3.2 流量控制1.3.3 拥塞控制1.3.4 延迟应答1.3.5 捎带应…

草的渲染理论

Unity引擎提供了基础的terrain工具&#xff0c;可以制作地形&#xff0c;在上面刷树刷草。对于树&#xff0c;Unity是支持带LOD的Prefab&#xff0c;不同距离显示不同细节的模型&#xff0c;效果还不错。对于草&#xff0c;Unity支持两种方式来刷草&#xff0c;一种是Add Grass…

汇凯金业:解读区块链概念、类型与独特优势

区块链作为一种具有革命性的创新技术&#xff0c;正在逐渐改变我们的生活和商业模式。它的去中心化、安全可靠、不可篡改等特性&#xff0c;为解决许多传统领域中的问题提供了新的思路和方法。 一、区块链的基本概念 区块链是一种具有创新性的计算机技术应用模式&#xff0c;…

C#复习之类和对象

知识点一&#xff1a;什么是类 基本概念&#xff1a; 具有相同特征 具有相同行为 一类事物的抽象 类是对象的模板 可以通过类创建出对象 类的关键字 Class 知识点二&#xff1a;类声明在哪里 类一般声明在namespace语句块中 知识点三&#xff1a;类声明的语法 知识点四&#xf…

html+css 实现文字滚动的按钮

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享htmlcss 绚丽效果&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 文…

2024年前端趋势:全栈或许是不容错过的选择!

近年来&#xff0c;前端开发的技术不断推陈出新&#xff0c;2024年也不例外。在这个变化迅速的领域&#xff0c;全栈开发逐渐成为一股不容忽视的趋势。无论你是经验丰富的开发者&#xff0c;还是刚刚入门的新手&#xff0c;掌握全栈技术都能让你在竞争中脱颖而出。而在这个过程…

Spring -- 拦截器

T04BF &#x1f44b;专栏: 算法|JAVA|MySQL|C语言 &#x1faf5; 今天你敲代码了吗 文章目录 1. 自定义拦截器2. 注册配置拦截器3. 拦截器详解3.1 拦截路径3.2 拦截器执行流程 3.3 DispatcherServlet源码分析3.3.1 初始化:3.3.2 处理请求3.3.3 适配器 拦截器是Spring框架提供的…

vue项目删除无用的依赖

1.安装依赖检查工具 npm i depcheck 2.查看无用的依赖 npx depcheck 3.手动删除pageage.json中的无用的依赖&#xff08;如果有sass和sass-loader不要删&#xff0c;会引起项目报错&#xff09; 4.全部删除完成之后&#xff0c;删除package-lock.json和yarn.lock文件&#x…