微服务为什么一定要用docker?今天通过一篇文章为大家分享docker入门详解,欢迎大家一起阅读!
1. 通过将功能分解到各个离散的服务中以实现对解决方案的解耦。
2. 你可以将其看作是在架构层次而非获取服务的
1、程序开发的角度:
把一个大型的单个应用程序和服务拆分为数个甚至数十个的支持微服务,它可扩展单个组件而不是整个
的应用程序堆栈,从而满足服务等级协议。
2、定义:
围绕业务领域组件来创建应用,这些应用可独立地进行开发、管理和迭代。在分散的组件中
使用云架构和平台式部署、管理和服务功能,使产品交付变得更加简单。
微服务(Microservice)这个概念是2012年出现的,作为加快Web和移动应用程序开发进程的一种方
法,2014年开始受到各方的关注,而2015年,可以说是微服务的元年;
1. 传统开模式:
缺点:
1、效率低:开发都在同一个项目改代码,相互等待,冲突不断
2、维护难:代码功能耦合在一起,新人不知道何从下手
3、不灵活:构建时间长,任何小修改都要重构整个项目,耗时
4、稳定性差:一个微小的问题,都可能导致整个应用挂掉
5、扩展性不够:无法满足高并发下的业务需求
基于微服务的开发模式:
1、一些列的独立的服务共同组成系统
2、一些列的独立的服务共同组成系统
3、单独部署,跑在自己的进程中
4、每个服务为独立的业务开发
5、分布式管理
6、非常强调隔离性
Java :一次编译,到处运行 JVM Java虚拟机
Docker :真正实现一次编译,到处运行
Docker 是一个开源的应用容器引擎,它基于 Google 公司推出的 Go 语言实现
让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或
Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
目标
了解虚拟化技术
概述
在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制。一般所指的虚拟化资源包括计算能力和资料存储。
(比如:vmware也是一个虚拟资源,大家都在使用vmware,大家都是在上面建立一个虚拟机,其实这就是一种虚拟化技术,或者半虚拟化技术,大家是不是使用vmware安装一个centos的系统或者安装一个windows的系统。那么你在上面操作其实和你在实体机上操作是不是比较类似,对吧,他们之间这种技术就是虚拟化技术。
这种虚拟化技术它有一个小小的弊端,我们在我们的vmware上面创建了一个centos的虚拟机,它在使用的时候是以我当前的操作系统紧密相连的,简单点说,你的操作系统内存只有4G,你在创建虚拟机的时候你会分配8个G吗?
说不能,说明虚拟机是依赖我们的当前的物理系统,它只不过是在之上构建了虚拟的系统,我们就可以使用它,这种其实就是一种半虚拟化技术。)这种虚拟机技术,完全依赖底层的宿主机,每个虚拟机本身都是独立的,隔离的,每一个都有自己单独的内存,资源没有办法达到共享,资源达不到最大化的利用和使用。而docker和它不一样,它是共享的,大白话就是我的上面有docker容器可以共享我的资源,这个时候就会在宿主机上或者一台主机上,我可以部署很多个docker容器,他们是共享的 docker这种容器技术,给我们的开发和运维去做一个统一的环境,是非常非常好的,也是非常高效和快捷的。
大家知道在真实的开发中,开发人员和与运维人员经常因为环境的问题出现故障和扯皮,这个是非常常见的纠纷,比如你在电脑上的环境都是你自己安装部署的,ok你开发完了运行没有任何问题,但是测试人员在测试的时候出问题了。为什么呢?因为它和你的环境不一样,比如你使用的是jdk1.8他使用的是1.7,常常因为各种版本的问题造成不必要的麻烦,而使用docker这个容器,首先他的第一件事情就是它能帮助我们统一运行环境。这样的话,这样的话能提高我们的开发效率,因为大家都使用的是同一个环境。所以说呀,docker以后在未来的开发环境中,用的越来越多,但是呢,docker在真正的学习过程中,它是有点偏运维方面。这也就是为什么现在招聘里面有一个职位叫:运维开发工程师
什么是物理机
什么是虚拟机
什么是docker
官网:https://www.docker.com/
图例:
一头鲸鱼通过身上的集装箱(Container)来将不同种类的货物进行隔离,而不是通过生出很多小鲸鱼来承运不同种类的货物。Docker是一个开源的应用容器引擎,基于GO语言并遵从 Apache2.0协议开源。Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的容器是完成使用沙箱机制,相互之间不会有任何接口重叠,更重要的容器性能开销极低。一个完整的Docker基本架构由如下几个部分构成:客户端,宿主机,注册中心
1:Docker客户端
也就是在窗口中执行的命令,都是客户端
2:Docker Daemon守护进程
用于去接受client的请求并处理请求
3:仓库:
Docker用Registry来保存用户构建的镜像。Registry分为公共和私有两种。Docker公司运营公共的Registry叫做Docker Hub。远程仓库地址:https://hub.docker.com/
4:镜像:
简单点说:镜像不是单一的文件:而是有多层构成,我们可以通过 docker history 镜像名|id 查看镜像中各层内容及大小,每层都对应着Dockerfifile中的一条指令。Docker镜像默认存在/var/lib/docker/中。镜像从何而来:Docker Hub是由docker公司负责和维护的公共注册中心,包含大量的镜像文件,Docker客户端工具默认从这个公共镜像仓库下载镜像, 远程仓库地址:https://hub.docker.com/
5:容器
容器其实是在镜像的最上面加了一层读写层,在运行容器里做的任何文件改动,都会写到这个读写层。如果容器删除了,最上面的读写层也就删除了,改动也就丢失了。Docker使用存储驱动管理镜像每层内容及可读写层的容器层。
远程仓库镜像地址:https://hub.docker.com/
解释:镜像就像你下载了一个gz或zip压缩包。只不过这个镜像文件中意见包括了几个部分:
1:微型计算机(文件系统,网络)
2:当前镜像的文件,比如你下载的tomcat,tomcat的镜像文件就包括了:微型计算机 + Tomcat环境+Jdk环境 = Tomcat镜像
什么是容器:就是镜像创建出来的一个运行的系统,与其说是系统还不如说,容器就是一个进程。就好比你之前下载了tomcat就开始进行解压安装和运行。
当下Docker容器化技术的背景和支撑
总结
什么是Docker
1:使用最广泛的开源容器.
2:一种操作系统的虚拟化技术 linux 内核
3:依赖于Linux内核特性:NameSpace和Cgroups
4:一个简单的应用程序打包工具
作用和目的
1:提供简单的应用程序打包工具
2:开发人员和运维人员职责逻辑分离
3:多环境保持一致。消除了环境的差异。
Docker的应用场景
1:应用程序的打包和发布
2:应用程序隔离
3:持续集成
4:部署微服务
5:快速搭建测试环境
6:提供PaaS平台级产品
容器带来的好处有哪些?
1)秒级的交付和部署
2)保证环境一致性
3)高效的资源利用
4)弹性的伸缩
5)动态调度迁移成本低
大家需要注意:
Docker本身并不是容器,它是创建容器的工具,是应用容器引擎 。
一. 想要搞懂Docker,其实看它的两句口号就行 :第一句,是“Build, Ship and Run”
也就是
搭建、发送、运行 三板斧
第二句口号就是:“Build once,Run anywhere**(搭建一次,到处能用)**”。
Docker技术的三大核心概念,分别是:
镜像(Image)
容器(Container)
仓库(Repository
负责对Docker镜像进行管理的,是Docker Registry服务(类似仓库管理员)。
不是任何人建的任何镜像都是合法的。万一有人盖了一个有问题的房子呢?所以,Docker Registry服务对镜像的管理是非常严格的。最常使用的Registry公开服务,是官方的Docker Hub,这也是默认的Registry,并拥有大量的高质量的官方镜像。