概述
微服务架构
微服务是一种设计思想,是将单体的系统拆分为多个小型独立的系统,各个服务都独立开发、部署、测试。服务之间通过轻量级通信协议进行通讯协作。
微服务与传统单体系统区别
传统单体系统所有业务实现、前后端代码都在一个系统,前期开发、部署、测试都比较简单,随着业务扩展,系统逐渐变更臃肿,单体系统的扩展和维护变得困难。而微服务则是为了解决系统臃肿问题,微服务根据不同功能模块将系统拆分为多个服务,每个服务都在独立的进程运行,有稳定的边界,不会影响其他系统。
为什么要使用Docker
容器技术的优势
- 强隔离性: 使用Docker之前,项目部署交互基本采用虚拟机模式,在虚拟机部署各种依赖环境和web容器,将项目打包并上传到虚拟机然后逐个进行部署,虚拟机下各个应用互相影响,部署启动单个应用会影响虚拟机下所有应用。而Docker将应用封装到容器里,包含应用代码、运行环境、依赖库、配置文件等资源,容器之间打到进程级隔离,在容器中操作不会影响宿主机和其他容器。
- 弹性伸缩: 使用Docker之前,要扩展服务器,需要运维进行一堆虚拟机环境安装,扩展成本较高,而Docker将运行环境、配置等资源都封装到容器中,由于配合现在云服务,完全实现随开随关的弹性伸缩。
- 保证环境一致性: 基于Docker容器技术,可以实现开发、测试、线上环境的统一化和标准化。
- 秒级交付和部署: 随着现在k8s的流行、发布管理、资源管理、编排技术等的发展,结合CI/CD可以实现项目的秒级交付和部署。
- 高效的资源利用: Docker容器技术非常轻量,相对于传统虚拟机体量,Docker容器化技术能加节省服务器资源。同时Docker无需预先设置容量,配合合理的资源管理平台,能够更加有效的利用资源。
Docker和虚拟机
指标 | 虚拟机 | Docker |
占服务器空间 | 非常大,GB级 | 小,MB甚至KB |
启动速度 | 慢,分钟级 | 启动快,秒级 |
运行形式 | 运行在Hypevisor上 | 直接运行在宿主机内核上,共享内核 |
并 发 数 | 少,一台宿主机通常十几个,最多几十个 | 多,上百个甚至多百上千 |
性能 | 低于宿主机 | 接近宿主机本地进程 |
资源利用 | 低 | 共享内核,高效利用资源 |
通过对比可以看出Docker在启动、性能、并发数、资源利用上明显优于虚拟机。
什么是Docker?
Docker是开源容器化引擎,是目前最流行的linux容器化解决方案。开发者通过Docker将应用程序、运行环境、依赖包、配置文件等资源打包封装在可移植的容器中,然后发布在任何流行的Linux和Windows机器上,也可以做虚拟化。Docker安全使用沙箱机制,相互之间不会有任何关联。
Docker组成及架构
一个完整Docker由以下几个部分组成:
- Docker Clinet
- Docker Daemon 守护进程
- Docker image Docker镜像
- Docker Container 容器
(Docker2019工作机制)
Docker2019相对于Docker2013主要新增了两个主要组件,一个是容器生命周期中管理容器的Containerd,另一个是符合OCI标准的运行时(Runc),用于创建容器的最低用户级抽象(替换Docker2013 LXC)。
Docker 安装
环境:Linux环境中的CentOS 7.X以上版本 + 阿里云ES
步骤:
使用yum进行安装
step1 购买阿里云ES
使用阿里云需要注意几点:
1 设置实例密码方便远程连接
2 镜像实例CentOS需要选择7.x以上版本,Docker只支持7.x以上
3 需要安全组,安全组-配置策略-配置需要访问端口
step2 远程连接阿里云实例
step3 更新依赖组件
yum update
step4 安装必要系统工具
yum install -y yum-utils device-mapper-persistent-data lvm2
step5 设置软件源为阿里云
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
step6 安装Docker
yum makecache fast
yum -y install docker-ce
step7 检查安装结果
docker -v
[root@iZm5eawdclf0uzo2gxfi6uZ ~]# docker -v
Docker version 19.03.8, build afacb8b
Docker启动与停止
Docker 启动
[root@iZm5eawdclf0uzo2gxfi6uZ ~]# systemctl start docker
[root@iZm5eawdclf0uzo2gxfi6uZ ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
Docker 重启
systemctl restart docker
Dokcer 停止
[root@iZm5eawdclf0uzo2gxfi6uZ ~]# systemctl stop docker
[root@iZm5eawdclf0uzo2gxfi6uZ ~]# docker images
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
容器创建与启动
step1 设置ustc镜像源
为了加速Dokcer镜像速度,可以陪着镜像加速器。
阿里云控制台-产品与服务-弹性计算-容器镜像服务-镜像中心-镜像加速器
复制命名到服务器执行即可
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://r3k6vgz4.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
查看容器
docker images
拉取镜像
docker pull 镜像名字 镜像版本(可选,不带版本默认拉取latest)
DockerUI安装---安装Portainer
Docker图形管理页面主要有三类: DockerUI、Portainer 和Shipyard
step1 查询DocherUI Portainer镜像
docker search Portainer
step2 选择自己喜欢UI版本进行下载安装
docker pull portainer/portainer
step3 启动UI
命令解读 run命令 自定义端口号:PortainerUI默认端口号 -v 目录挂载
docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --name prtainer-test portainer/portainer
step4 查看容器
查看所有容器
[root@iZm5eawdclf0uzo2gxfi6uZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ded1649a1495 portainer/portainer "/portainer" 12 seconds ago Up 11 seconds 0.0.0.0:9000->9000/tcp prtainer-test
查看运行中容器
[root@iZm5eawdclf0uzo2gxfi6uZ ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ded1649a1495 portainer/portainer "/portainer" 40 seconds ago Up 40 seconds 0.0.0.0:9000->9000/tcp prtainer-test
[root@iZm5eawdclf0uzo2gxfi6uZ ~]#
step5 访问UI
阿里云ES公网IP+UI端口(PS,这里需要事先设置安全组9000端口可访问)
tomcat容器安装及部署应用
step1 docker hub官方查询镜像
https://hub.docker.com/ --------->search tomcat
step2 选择合适版本下载安装 这里选择8.5.54-jdk8-openjdk
docker pull tomcat:8.5.54-jdk8-openjdk
[root@iZm5eawdclf0uzo2gxfi6uZ ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat 8.5.54-jdk8-openjdk eb2cfb95e04d 2 weeks ago 529MB
portainer/portainer latest 2869fc110bf7 7 weeks ago 78.6MB
[root@iZm5eawdclf0uzo2gxfi6uZ ~]#
step3 启动tomcat
docker run -di --name=mytomcat -p 8081:8080 -v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:8.5.54-jdk8-openjdk
elaticsearch安装
step1 拉取es镜像
docker pull elasticsearch
step2 运行es(创建单节点)
docker run -id --name=elasearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch
step3 配置跨域
进入容器修改配置
docker exec -it elasearch /bin/bash
修改ElasticSearch.yml在最后面加两行代码
http.cors.enabled: true
http.cors.allow-origin: "*"
==================================
注意新创建阿里云ES需要命名都需要安装
安装sz
安装vim 使用apt安装
更新依赖
apt-get update
安装
apt-get install vim
==================================
step4 重启es
docker restart elasearch
step5 安装es可视化管理UI
docker pull mobz/elasticsearch-head:5
step6 启动ESUI
docker run -d --name=es-admin -p 9100:9100 mobz/elasticsearch-head:5
step7 访问UI