1、程序开发的角度:
把一个大型的单个应用程序和服务拆分为数个甚至数十个的支持微服务,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议。
**2、定义:**围绕业务领域组件来创建应用,这些应用可独立地进行开发、管理和迭代。在分散的组件中使用云架构和平台式部署、管理和服务功能,使产品交付变得更加简单。
微服务(Microservice)这个概念是2012年出现的,作为加快Web和移动应用程序开发进程的一种方法,2014年开始受到各方的关注,而2015年,可以说是微服务的元年;
缺点:
1、效率低:开发都在同一个项目改代码,相互等待,冲突不断
2、维护难:代码功功能耦合在一起,新人不知道何从下手
3、不灵活:构建时间长,任何小修改都要重构整个项目,耗时
4、稳定性差:一个微小的问题,都可能导致整个应用挂掉
5、扩展性不够:无法满足高并发下的业务需求
基于微服务的开发模式:
1、一些列的独立的服务共同组成系统
1、一些列的独立的服务共同组成系统
2、单独部署,跑在自己的进程中
3、每个服务为独立的业务开发
4、分布式管理
5、非常强调隔离性
Docker : 真正实现一次编译,到处运行
Docker 是一个开源的应用容器引擎,它基于 Google 公司推出的 Go 语言实现
让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
了解虚拟化技术
在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网
络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更
好的方式来应用这些资源。这些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制。一般所指
的虚拟化资源包括计算能力和资料存储。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5ArlD4Eh-1573219420311)(assets/1556260546266.png)]
(比如:vmware也是一个虚拟资源,大家都在使用vmware,大家都是在上面建立一个虚拟机,其实这就是一种虚拟化技术,或者半虚拟化技术,大家是不是使用vmware安装一个centos的系统或者安装一个windows的系统。那么你在上面操作其实和你在实体机上操作是不是比较类似,对吧,他们之间这种技术就是虚拟化技术。这种虚拟化技术它有一个小小的弊端,我们在我们的vmware上面创建了一个centos的虚拟机,它在使用的时候是以我当前的操作系统紧密相连的,简单点说,你的操作系统内存只有4G,你在创建虚拟机的时候你会分配8个G吗?说不能,说明虚拟机是依赖我们的当前的物理系统,它只不过是在之上构建了虚拟的系统,我们就可以使用它,这种其实就是一种半虚拟化技术。)
这种虚拟机技术,完全依赖底层的宿主机,每个虚拟机本身都是独立的,隔离的,每一个都有自己单独的内存,资源没有办法达到共享,资源达不到最大化的利用和使用。而docker和它不一样,它是共享的,大白话就是我的上面有docker容器可以共享我的资源,这个时候就会在宿主机上或者一台主机上,我可以部署很多个docker容器,他们是共享的 docker这种容器技术,给我们的开发和运维去做一个统一的环境,是非常非常好的,也是非常高效和快捷的。大家知道在真实的开发中,开发人员和与运维人员经常因为环境的问题出现故障和扯皮,这个是非常常见的纠纷,比如你在电脑上的环境都是你自己安装部署的,ok你开发完了运行没有任何问题,但是测试人员在测试的时候出问题了。为什么呢?因为它和你的环境不一样,比如你使用的是jdk1.8他使用的是1.7,常常因为各种版本的问题造成不必要的麻烦,而使用docker这个容器,首先他的第一件事情就是它能帮助我们统一运行环境。这样的话,这样的话能提高我们的开发效率,因为大家都使用的是同一个环境。所以说呀,docker以后在未来的开发环境中,用的越来越多,但是呢,docker在真正的学习过程中,它是有点偏运维方面。这也就是为什么现在招聘里面有一个职位叫:运维开发工程师
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BWp7OwVU-1573219420311)(C:\Users\Arry\AppData\Roaming\Typora\typora-user-images\image-20191107184738575.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jGCaY0lt-1573219420314)(C:\Users\Arry\AppData\Roaming\Typora\typora-user-images\image-20191107184801679.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HPVSyVWo-1573219420316)(C:\Users\Arry\AppData\Roaming\Typora\typora-user-images\image-20191107184823656.png)]
官网:https://www.docker.com/
图例:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QAnJdoO3-1573219420317)(assets/timg-1570839021079.jpg)]
一头鲸鱼通过身上的集装箱(Container)来将不同种类的货物进行隔离,而不是通过生出很多小鲸鱼来承运不同种类的货物。
Docker是一个开源的应用容器引擎,基于GO语言并遵从 Apache2.0协议开源。
Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的容器是完成使用沙箱机制,相互之间不会有任何接口重叠,更重要的容器性能开销极低。
远程仓库镜像地址
https://hub.docker.com/
解释:镜像就像你下载了一个gz或zip压缩包。只不过这个镜像文件中意见包括了几个部分:
1:微型计算机(文件系统,网络)
2:当前镜像的文件,
比如你下载的tomcat,tomcat的镜像文件就包括了:
微型计算机 + Tomcat环境+Jdk环境 = Tomcat镜像
什么是容器:就是镜像创建出来的一个运行的系统,与其说是系统还不如说,容器就是一个进程。
就好比你之前下载了tomcat就开始进行解压安装和运行。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0dAyiPfu-1573219420319)(C:\Users\Arry\AppData\Roaming\Typora\typora-user-images\image-20191107180105005.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EJrh2jsZ-1573219420320)(C:\Users\Arry\AppData\Roaming\Typora\typora-user-images\image-20191107182009522.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B6ZWZWcp-1573219420320)(assets/1549786287808.png)]
掌握Docker的安装
Linux环境中的Centos7.x以上版本 + 联网
步骤:
(1)yum 包更新到最新
> yum update
(2)安装依赖组件包,需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
> yum install -y yum-utils device-mapper-persistent-data lvm2
(3)设置yum源为阿里云 在哪里下载呢?
> yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
(4)安装docker
> yum install docker-ce -y
(5)安装后查看docker版本
> docker -v
为了下载镜像更加快,可以配置docker镜像加速器
ustc是老牌的linux镜像服务提供者了,还在遥远的ubuntu 5.04版本的时候就在用。ustc的docker镜像加速器速度很快。ustc docker mirror的优势之一就是不需要注册,是真正的公共服务。
https://lug.ustc.edu.cn/wiki/mirrors/help/docker
官方的镜像仓库: https://hub.docker.com/
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://0wrdwnn6.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
掌握docker的启动与停止等的常用命令
详细命令:
# 启动docker:
systemctl start docker
# 停止docker:
systemctl stop docker
# 重启docker:
systemctl restart docker
# 查看docker状态:
systemctl status docker
# 开机启动:
systemctl enable docker
systemctl unenable docker
# 查看docker概要信息
docker info
# 查看docker帮助文档
docker --help
注意:systemctl命令是系统服务管理器指令
掌握创建与启动容器的命令
详细操作:
1、查看镜像
docker images
2:拉取镜像
> docker pull 镜像的名字
# 比如
> docker pull tomcat
3:查看正在
docker 图形页面管理工具常用的有三种:
DockerUI
Portainer
Shipyard
DockerUI 是 Portainer 的前身,这三个工具通过docker api来获取管理的资源信息。平时我们常常对着shell对着这些命令行客户端,审美会很疲劳,如果有漂亮的图形化界面可以直观查看docker资源信息,也是非常方便的。今天我们就搭建单机版的三种常用图形页面管理工具。这三种图形化管理工具以Portainer最为受欢迎。
1.查看dockerui Portainer镜像
docker search Portainer
2.选择喜欢的dockerui风格镜像,下载
docker pull docker.io/portainer/portainer
3. 启动UI
docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --name prtainer-test portainer/portainer
4:查看容器
docker ps -a
1.查看dockerUI镜像
docker search dockerui
2.选择喜欢的dockerui风格镜像,下载
docker pull abh1nav/dockerui
3. 启动UI
docker run -d --privileged --name dockerui -p 9001:9000 -v /var/run/docker.sock:/var/run/docker.sock abh1nav/dockerui
4:查看容器
docker ps -a
第一步: https://hub.docker.com/
第二步: https://hub.docker.com/search?q=&type=image
第三步:搜索 tomcat 找到 8.5.47-jdk8-openjdk
详细命令:
1、查看镜像
docker images
2、下载Tomcat镜像
#docker pull 镜像组件 比如:
> docker pull tomcat:8.5.47-jdk8-openjdk
3、创建tomcat容器
创建容器 -p表示地址映射
-v 是做宿主机和容器系统的目录映射,为什么要目录映射做,是因为:容器里的系统不能直接去上传文件。
docker run -di --name=mytomcat -p 8081:8080 -v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:8.5.47-jdk8-openjdk
4、然后切入到/usr/local/webapps
> cd /usr/local/webapps
> rz 没有安装
> 安装 rz命令 yum install lrzsz -y
选择的war包即可
5、然后在浏览器通过 ip +8081端口访问
http://39.98.157.205:8081/Arry_WeiYun/weiyun.html
``
6、如果你想进入tomcat容器执行如下:
```properties
# docker exec 进入到容器系统内部 bash代表进入到当前容器的执行目录比如:tomcat就是直接进入到tomcat目录
> docker exec -it mytomcat bash
> cd webapps/
> ls
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VH73bCC1-1573219420326)(C:\Users\Arry\AppData\Roaming\Typora\typora-user-images\image-20191107173449392.png)]
7、执行完毕可以使用UI镜像仓库,查看tomcat的状态
# 如果想退出容器到宿主机执行 exit
> exit