概述
微服務架構
微服務是一種設計思想,是將單體的系統拆分爲多個小型獨立的系統,各個服務都獨立開發、部署、測試。服務之間通過輕量級通信協議進行通訊協作。
微服務與傳統單體系統區別
傳統單體系統所有業務實現、前後端代碼都在一個系統,前期開發、部署、測試都比較簡單,隨着業務擴展,系統逐漸變更臃腫,單體系統的擴展和維護變得困難。而微服務則是爲了解決系統臃腫問題,微服務根據不同功能模塊將系統拆分爲多個服務,每個服務都在獨立的進程運行,有穩定的邊界,不會影響其他系統。
爲什麼要使用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