DLJD_Docker学习_01

news/2024/10/11 22:31:10

第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 系统架构图进行简述即可。

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

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

相关文章

Redis工具可视化工具Redis Desktop Manager(附安装包)

前言 redis工具,我相信每个开发都需要,如果每次查都去client执行指令,我怕查完之后,老大就要发版咯。我之前一直用的Redis可视化工具RedisDesktopManager,总觉得差点意思,直到同事推荐了个新的,突然2眼发光!! 先上链接: Redis可视化工具 RedisDesktopManager(旧版)…

纯干货无广告,毕业大论文,如何优雅地拼拼凑凑,降重和润色

目录拼拼凑凑风格选定实例(使用GPT翻译成中文)拼拼凑凑(手动拼凑)拼拼凑凑(GPT直述)知网查重率AIGC检测率查重普通查重AIGC检测降重直接使用GPT先缩写后扩写缩写扩写中日英互译中翻日日翻英英翻中效果润色(必须得进行)GPT润色人工润色(推荐) 拼拼凑凑 风格选定 风格1…

特斯拉发布Robotaxi,支撑其自动驾驶的FSD你需要了解一下

前言 大家好,我是小徐啊。10月11日,在特斯拉新品发布会上,在位于加州洛杉矶的华纳兄弟探索电影制片厂举行名为“Robotaxi Day”(无人驾驶出租车)的演示活动,该发布活动主题为“我们机器人”(We,Robot)。 这意味着,马斯克将揭示更多特斯拉自动驾驶汽车的最新进展。马斯…

Centos8使用KVM

安装好Centos8后先配置yum源 [root@localhost ~]# cd /etc/yum.repos.d/ [root@localhost yum.repos.d]# mkdir yum.bak [root@localhost yum.repos.d]# ls CentOS-AppStream.repo CentOS-CR.repo CentOS-Extras.repo CentOS-Media.repo CentOS-Vault.repo…

四级平安、吉祥如意、紫气东来

家和万兴济世长,妻贤子孝运恒昌。 南山苍松栖云鹤,东篱梧桐落凤凰。 西川潜龙引紫气,北斗流光降瑞祥。 德高望重仁者寿,恩泽子孙福满堂。为人:谦逊、激情、博学、审问、慎思、明辨、 笃行 学问:纸上得来终觉浅,绝知此事要躬行 为事:工欲善其事,必先利其器。 态…

mac安装ps2023

花了5毛钱从网上找的资源下载的,真累啊,找了好久 https://www.123pan.com/s/65fKVv-fekWA 1、安装时提示error2、包内容中打开install2、错误码501安装错误原因:Mac系统缺少ACC云运行框架,导致安装报错! 3、错误码81adobe create clould 退出登录账号;

密码学承诺之原理和应用 - Kate多项式承诺

主页微信公众号:密码应用技术实战 博客园首页:https://www.cnblogs.com/informatics/ GIT地址:https://github.com/warm3snow简介 多项式承诺是一种实用性比较强的密码学承诺方案,允许一个方(承诺者)向另一个方(验证者)承诺一个多项式的值,而不泄露多项式的具体形式。…

线段树分治略解杂题解析

可能做到好题之后会再更新吧。 总叙 线段树与离线询问结合技巧又被称为线段树分治。 使用线段树分治维护的信息通常会在某一个时间段内出现,要求在离线的前提下回答某一个时刻的信息并,则可以考虑使用线段树分治的技巧。 以下是线段树分治的基本模板: change 将信息按时间段…