首页 > 其他分享 >DLJD_Docker学习_01

DLJD_Docker学习_01

时间:2024-10-11 22:23:57浏览次数:7  
标签:容器 01 操作系统 虚拟机 运行 镜像 Docker DLJD

第1章 Docker 概述

1.1 课程引入

开发/运维互掐

1.1.1

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

1.1.2 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.3 Docker 的用途

提供统一的运行环境

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-20241011203615310

1.4.2 传统虚拟技术

image-20241011205011669

传统的虚拟技术是在物理机的操作系统之上安装一个虚拟机管理程序,例如 VMware、VirtualBox 等。在其管理下可以创建很多个虚拟机。每个虚拟机需要安装自己独立的操作系统,而应用就是安装在虚拟机操作系统之上的程序,应用程序过调用各种命令或库函数来使用其需要的各种系统资源。
对于完全相同的两个应用,其若需要运行在两个虚拟机中,则就需要两套完全相同的虚拟机操作系统与 bins/libs,存在大量的资源占用冗余。形成资源浪费。

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

image-20241011210036459

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

1.5.3 现在的 Windows 系统

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

image-20241011210140012

1.5.4 windows 的启动

image-20241011210207287

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.6 Docker 系统架构

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

image-20241011214654020

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(https://hub.docker.com)。

1.7 总结

1.7.1课程引入

这部分是重点。
理解引发开发、测试与运维关系不和谐的原因是什么?(环境不同)理解运维对架构师
的抱怨点在哪里?(希望可以一键部署)了解学习过程中集群搭建所面临的问题是什么?(虚
拟机不能启动过多)
能够描述什么是 DevOps?(是一种思想,一种管理模式,用于促进三部门间的沟通与协
作)。

1.7.2 Docker 简介

能够简述 Docker LOGO 的由来(Container 这个单词的意思不仅有“容器”,还有“集装
箱”。这就是为什么 LOGO 中出现很多集装箱的原因。至于鲸鱼,是在众多 LOGO 方案中由
网友投票投出的结果),Docker 名称的含义(Docker 的本义为码头工人,即操作集装箱的人)。

1.7.3 Docker 的用途

了解 Docker 可以将应用与环境打包为镜像,然后可以实现“一处可运行,处处可运行”。

1.7.4 容器与虚拟机的区别

这部分是重点与难点。
容器与虚拟机的最大区别是,虚拟机中存在独立的硬件系统与操作系统,但容器中的全
部是共享的宿主机中的操作系统与硬件系统。

1.7.5 Windows 系统的虚拟化

这部分是重点与难点。
先要了解什么是 Hypervisor(这在操作系统与硬件系统之间,用于实现多个虚拟机共享
宿主机的硬件系统),什么是 Hyper-V(它是微软提供的商业化 Hypervisor,运行在 windows
系统上)? KVM 与 Xen 是 Linux 系统上的开源的 Hypervisor
然后要理解现在的 Windows 系统的架构(操作系统与应用层分别是两个虚拟机,位于
Hyper-V 之上)
至于 VMware Workstation,要知道从 15.5.5 版本开始,其对 VMM 虚拟机技术进行了重
构,由原来需要直接调用 CPU 的虚拟化功能,改变为了通过调用 Win10 系统的 WHP(Windows
Hypervisor Platform)的 API 来运行。解决了 VMware Workstation 与 Hyper-V 的不兼容问题。

1.7.6 Docker 系统架构

能够对 Docker 系统架构图进行简述即可。

标签:容器,01,操作系统,虚拟机,运行,镜像,Docker,DLJD
From: https://www.cnblogs.com/javaxubo/p/18459481

相关文章

  • VS2019/2022配置C++ OpenCV4.10.0环境
    一、下载opencv4.10.0官网链接:https://opencv.org/ 安装的时候记住安装路径,本人安装到E盘 二、新建C++项目1、本人新建C++/CLR.Netframework项目 2、右击打开C++项目属性2.1、添加包含目录 此处本人配置的是绝对地址,拷贝build文件夹到程序目录,然后配置相对地......
  • SS241012B. 电梯(lift)
    SS241012B.电梯(lift)题意你有\(n\)种货物,每种货物有一个高度\(f\)和体积\(w\)。其中\(w\)表示体积是\(2^w\)。你有一个大小为\(2^m\)的背包,一个背包的花费是背包物品的最大高度,问使用若干个背包装完物品的最小代价。思路膜拜黄队%%%感觉黄队的做法比题解好。首先一......
  • 20241010
    表格游戏我们看到这么小的数据范围,可以想到暴搜,但是时间复杂度来到了\(2^{30}\),考虑折半搜索,那么其实看起来是\(2^{22}\times15\)的,但是实际测评中跑不满,所以可以\(AC\)AdjustThePresentation(EasyVersion)根据题意,他如果给一个人看过了幻灯片,那么这个人可......
  • AI预测体彩排3采取888=3策略+和值012路或胆码测试10月11日升级新模型预测第101弹
            经过100多期的测试,当然有很多彩友也一直在观察我每天发的预测结果,得到了一个非常有价值的信息,那就是9码定位的命中率非常高,已到达90%的命中率,这给喜欢打私菜的朋友提供了极高价值的预测结果~当然了,大部分菜友还是走的正常渠道,因此,得想办法进行缩水,尽可能少的缩......
  • AI预测福彩3D采取888=3策略+和值012路或胆码测试10月11日新模型预测第107弹
            经过100多期的测试,当然有很多彩友也一直在观察我每天发的预测结果,得到了一个非常有价值的信息,那就是9码定位的命中率非常高,100多期一共只错了12次,这给喜欢打私房菜的朋友提供了极高价值的预测结果~当然了,大部分菜友还是走的正常渠道,因此,得想办法进行缩水,尽可能......
  • 20241011-2
    1.判断最大值:定义一个无符号的整型数组,求数组中的最大值。思路:inta1=10,a2=20,a3=5; 两两相比,求最大值2.从终端获取字符串,将整个字符串倒置存储。(提示:可以使用辅助数组)3.10层杨辉三角#include<stdio.h>#include<string.h>#defineARR15typedefunsigned......
  • 20241011-1 字符串函数自写
    #include<stdio.h>#include<string.h>unsignedintmystrlen(char*str){ unsignedintcount=0; while('\0'!=*(str++)) { count++; } returncount;}/*str1:目的字符串str2:源字符串*/voidmystrcpy(char*str1,char*str2){ ch......
  • P3959 [NOIP2017 提高组] 宝藏 题解
    P3959[NOIP2017提高组]宝藏题解搜索魅力时刻怎么说,四种做法比较??的模拟退火跑得快但是正确性有问题的状压DP跑得慢但是一定正确的状压DP时间复杂度很玄学的DFS+剪枝我就选择了搜索的做法先打个暴搜,70pts点击查看暴搜代码#include<bits/stdc++.h>usingna......
  • 1010
    对这两天灾难性的表现做以下总结。1010考试流程:开T1,快速出思路并且实现,在30min之内。开T2,最开始没有意识到可以用差分的方法,花了约40min想到用线段树的方法,但是没有认真分析空间和时间常数,也没有造极限数据检验,导致写了一个过不了的算法,此时10:00。开T3,没有认真想就......
  • [NOI2001] 炮兵阵地
    原题链接\(这道题运用到了状态压缩dp的知识\)\(主要作用为使用二进制中的!(i&i>>1)来表示左右一个是否能够互相攻击到!(i&i>>2)来表示左右两格能否攻击到\)\(对于上下的两格我们考虑维护一个f[i][a][b]i表示当前为第几行a表示第二行的数b表示第一行的数\)\(对于每个f[i][......