docker web程序本地化_Docker-01-Docker介绍

一 什么是虚拟化

在计算机中,虚拟化(Virtualization)是一种资源管理技术,是计算机的各种实体资源,如服务器,网络,内存及存储等,予以抽象,转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部分是不受现有资源的架设方式,地域或物理组态所限制。一般所指的虚拟化资源包括计算能力和资料存储

在世纪的生产环境中,虚拟化技术主要用来解决高性能的物理硬件产能过剩和老旧的硬件产能过低的重组崇勇,透明化底层物理硬件,从而最大化的利用物理硬件,对资源充分利用

虚拟化技术种类很多,例如:软件虚拟化,硬件虚拟化,内存虚拟化,网络虚拟化,桌面虚拟化,服务虚拟化,虚拟机等

二 什么是Docker

58a1e48afdfc8ae717c4270c43413603.png

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),社区版免费,企业版收费。

三 容器与虚拟机比较

下面的图片比较了 Docker 和传统虚拟化方式的不同之处,可见容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统方式则是在硬件层面实现。

虚拟机:

47b7fb6b1418e395715de1959f6368bf.png

Docker:

a44396cf0a7dd06264c753b52c141c21.png

四 Docker的使用场景

1、Web应用服务

Web应用服务是使用最广泛的一类服务,典型的架构是前端一个Tomcat + Java服务,后端mysql数据库。前端的Java web服务器是最适合使用Docker容器的,先将Java运行环境、web服务器直接打包成一个通用的基础docker镜像,之后再将自定义应用代码或编译程序包加入到该基础镜像中就能产生一个新的应用镜像,最后通过docker服务立马就能以容器的形式启动web应用服务。因为web应用程序一般是无状态的,随着业务访问量增减,用同样的镜像新建、销毁容器即可轻松实现伸缩(前面还需配上DNS域名或者负载均衡的服务),例如下图所示。

a3f067ce00ad7a29930c8a8187e7b429.png

2、持续集成和持续部署

互联网行业倡导敏捷开发,使用docker容器云平台,就能实现从代码编写完成推送到git/svn后,自动触发后端平台将代码下载、编译并构建成测试docker镜像,再替换测试环境容器服务,自动在Jenkins中运行单元/集成测试,最后测试通过后,马上就能自动将新版本镜像更新到线上,完成服务升级。整个过程全自动化,一气呵成,最大程度地简化了运维成本,而且保证线上、线下环境完全一致,而且线上服务版本与git/svn发布分支也实现统一。

8b189304bd7755ff8edfabc51cb6ab78.png

3、微服务架构使用

微服务架构将传统分布式服务继续拆分解耦,形成一些更小服务模块,服务模块之间独立部署升级,这些特性与容器的轻量、高效部署不谋而合。如下图所示,每个容器里可以使用完全不同环境的镜像服务,容器启动即产生了一个独立的微服务主机节点,上层服务与下层服务之间服务发现通过环境变量注入、配置文件挂载等多种方式灵活解决,而且还可以直接将云平台提供的各种云服务与自定义的微服务整合组成一个强大的服务集群。

更重要的是,拥有如此多服务的集群环境迁移、复制也非常轻松,只需选择好各服务对应的docker服务镜像、配置好相互之间访问地址就能很快搭建出一份完全一样的新集群。

f9dc58c479ad3c06bfbdd767c61b23a6.png

五 Docker的优点

1、更快速的交付和部署

对开发和运维人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。

开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码。 Docker 可以快速创建容器,快速迭代应用程序,并让整个过程全程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的。 Docker 容器很轻很快!容器的启动时间是秒级的,大量地节约开发、测试、部署的时间。

2、更高效的虚拟化

Docker 容器的运行不需要额外的 hypervisor 支持,它是内核级的虚拟化,因此可以实现更高的性能和效率。

3、更轻松的迁移和扩展

Docker 容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。 这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个。

4、更简单的管理

使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理。

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

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

相关文章

tk-mapper 生成器

tk-mapper生成代码代码,项目地址如何使用1. 生成实体类, XML文件, Mapper接口。 2. 版本相关:mapper: 3.4.1mapper-spring-boot-starter: 1.1.2mybatis-generator-core: 1.3.6 3. 这里以SpringBoot为demo, 作为一个程序,运行Gener…

大二《数据结构》机考解题报告

这次学校数据结构机考,题目很奇怪,简直让我觉得这是算法考试……三道题,撑死了用到树的遍历和并查集,连个队列都没用,也是醉了-.- 第一题 高精度加法 两个数相加,数最多5000位,也就是和最多5001…

前端学习(1321):node.js得异步api

const fs require(fs);fs.readFile(./1.txt, utf8, (err, result1) > {console.log(result1);fs.readFile(./2.txt, utf8, (err, result2) > {console.log(result2);fs.readFile(./3.txt, utf8, (err, result3) > {console.log(result3);});}); }) 运行结果

ipad怎么和mac分屏_将Mac屏幕扩展到iPad有多好用?我甚至有了入手iPad Pro的冲动...

这次我手机先不升 iOS 13,不够稳,但 iPadOS 更新这么多,我是绝对会升的。手捧 11 英寸 iPad Pro 几个月,但却一直只把它当做大号 iPod Touch 的朋友在看完《iPadOS 抢先体验:这是一次属于 iPad 的成人礼》这篇文章后对…

SpringBoot配置文件绑定到Java Bean

boot读取配置文件1. yml配置文件2. 绑定方式13. 绑定方式23.1 依赖.3.2 boot 中提供的属性装配功能。1. 在某些业务中,需要将类的配置写到配置文件中, 不在代码中写死配置。 2. 所以需要读取配置文件(yaml, properties) 读取到Java Bean中。 3. 本文以oss对象存储配…

Ruby学习-第二章

第二章 类继承&#xff0c;属性&#xff0c;类变量 1.如何声明一个子类 class Treasure < Thing 这样Thing类中的属性name&#xff0c;description都被Treasure继承 2.以下三种方式传入父类initialize方法的参数分别是什么&#xff1f; # This passes a, b, c to the superc…

面向接口编程的优点_为什么我们要面向接口编程

到底面向&#xff1f;编程面向过程编程( ProcedureOriented、简称 PO) 和 面向对象编程( ObjectOriented、简称 OO) 我们一定听过&#xff0c;然而实际企业级开发里受用更多的一种编程思想那就是&#xff1a;面向接口编程( Interface-Oriented)&#xff01;接口这个概念我们一定…

设计模式:设计原则

程序设计的原则1. 单一设计原则2. 接口隔离原则3. 依赖倒转4. 里氏替换原则5. 开闭原则6. 迪米特原则7. 合成复用1. 单一设计原则 每一个类只负责做自己的的功能。不能跨越到其它类。 不合理 package top.bitqian.principle.single_responsibility;/*** author echo lovely* …

Android数据库LitePal的存储操作

本文属于转载&#xff0c;在此声明&#xff0c;出处&#xff1a;http://blog.csdn.net/guolin_blog/article/details/38556989 并且感谢guolin分享了这么精彩的博文。以下正文&#xff1a; 经过前面几篇文章的学习&#xff0c;我们已经把LitePal的表管理模块的功能都很好地掌握…

程控电源测试微安电流模式_无缝隙源和负载的切换:双向程控电源的一大门槛...

目前采用电池供电的直流无刷电机驱动的设备越来越多&#xff0c;从电动工具&#xff0c;无人机、机器人、再到电动汽车等。然而电机驱动器和电池的管理始终是研发工程师不得不面对的一道难题。电动机利用的是“电生磁”原理&#xff0c;把电能转换成机械能。但制动&#xff0c;…

前端学习(1324):anysc关键字

//只能出现再异步函数中 暂停异步函数得执行 async function fn() {throw 发生勒一些错误;return 123; } //console.log(fn()) fn().then(function(data) {console.log(data); }).catch(function(err) {console.log(err); }) 运行结果

Pacman主题下给Hexo增加简历类型

原文 http://blog.zanlabs.com/2015/01/02/add-resume-type-to-hexo-under-pacman-theme/ 背景 虽然暂时不找工作&#xff0c;但是想着简历也是个向别人推销自己的好东西。然后也想着折腾点新的东西&#xff0c;如此&#xff0c;这般&#xff0c;便想着研究起写个简历了。形式不…

屏幕输出语句_C语言快速入门——表达式与语句

表达式表达式是由运算符和操作数组合构造成。最简单的表达式是一个单独的操作数&#xff0c;以此作为基础&#xff0c;结合语言自身支持的操作符&#xff0c;就可以建立复杂的表达式。下面是一些表达式&#xff1a;从这里可以看到&#xff0c;操作数可以是数据常量(4&#xff0…

前端学习(1325):await关键字

async function p1() {return p1; } async function p2() {return p2; } async function p3() {return p3; } async function run() {let r1 await p1();let r2 await p2();let r3 await p3();console.log(r1);console.log(r2);console.log(r3);} run(); 运行结果

接口测试客户端的搭建

一. 引言 随着公司项目整体架构由原来的多渠道各自为战&#xff0c;向着建立统一的服务端应用&#xff0c;从而为各渠道提供服务调用的转变&#xff0c;服务端应用接口测试成了我们日常工作中的重要任务之一。经过半年的摸索和项目实战&#xff0c;我们已经掌握了一套接口测试的…

python对excel数据求和_96、python操作excel求和

这里介绍如何用python来自动完成我们的excel工作。本文的目的是展示一些常见的Excel任务&#xff0c;以及如何在python pandas中执行类似的任务。例子微不足道&#xff0c;但重要的是通过这个例子来循序渐进的介绍pandas简单到复杂的功能。展示pandas如何利用Python的完整的模块…

前端学习(1327):node全局对象global

global.console.log(我是歌谣); global.setTimeout(function() {console.log(123); }, 2000) 运行结果

4字节 经纬度_java 获取本机经纬度

package com.smm.web.mtower.util;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.URL;/*** Created by zhenghao on 2016/6/24.* 当前位置处理工具*/public class LocationUtil {/*…

C#秘密武器之反射——基础篇

先来一段有用的反射代码 namespace Calculator { public interface Iwel { String Print(); } } namespace Calculator { public class Arithmetic:Iwel { /// <summary> /// 没有带参数的构造函数 /// </summary> public Arithmetic() {} public Arithmetic(i…