springcloud與docker微服務架構實戰--筆記


看了《微服務那些事》之后,Spring boot和Spring Cloud的關系理清楚了,Spring cloud各個模塊的作用也了解了。

但是,Spring cloud 與Docker的關系,Spring boot 與 Docker的關系,Spring cloud 的詳細使用,還是不了解。

《springcloud與docker微服務架構實戰》這本書,一共270頁,雖然介紹的不會太深入,不過,對於入門來說是很好的書,畢竟太厚的書不適合入門用。

這本書一共14章

第一章、微服務架構概述

第二章、Spring cloud 簡介

第三章、開始使用Spring cloud

第四章、微服務注冊與發現 Eureka

第五章、Ribbon實現客戶端負載均衡

第六章、Feign實現REST調用

第七章、Hystrix實現容錯處理

第八章、使用Zuul構建微服務網關

第九章、使用Spring Cloud Config 統一管理微服務的配置

第十章、Sleuth 實現微服務跟蹤

第11章、常見問題與總結

第12章、Docker

第13章、將微服務運行在Docker上

第14章、用Docker Compose編排微服務

第一章到第11章已經大體了解了,因此略看。

重點看12、13、14章,弄明白springboot、SpringCloud、Docker、Docker Compose之間的關系

 

第12章、Docker簡介

Client、Images、Container、Registry、Docker Hub

介紹了Docker的基本命令,由於我已經學了docker基礎,所以這部分就不再記錄。

 

第13章、將微服務運行在Docker上

構建一個Dockerfile文件。

執行docker build命令,示例如下:

docker build -t nginx:my.

Dockerfile的常用指令

ADD

ARG

ENV

CMD

EXPOSE

FROM

LABEL

MAINTAINER

RUN

USER

VOLUME

WORKDIR

 

使用方式

使用gradle打包項目

項目根目錄下建立文件Dockerfile,內容如下:

FROM java:8
VOLUME /tmp
ADD build/libs/discovery-0.0.1-SNAPSHOT.jar /app.jar
#修改文件的時間屬性為當前系統時間
RUN bash -c 'touch /app.jar'
EXPOSE 8761
ENTRYPOINT java -jar /app.jar

docker build -t lakeslove/springcloud-blog-discovery:0.01 .

docker run -it -d -p 8761:8761 lakeslove/springcloud-blog-discovery:0.01

訪問 locahost:8761

推送到dockerhub

docker login

docker push lakeslove/springcloud-blog-discovery:0.01

插件的使用:docker-maven-plugin、gradle-docker-plugin等,插件挺多的,不過我們項目里沒用這類插件,直接在jenkins腳本里寫的,這塊暫時不研究。

 

第14章、使用DockerCompose 編排微服務

Compose是一個用於定義和運行多容器Docker應用程序的工具,非常適合在開發、測試、構建CI工作流等場景。

使用Compose大致有3步:

使用Dockerfile定義應用程序環境,以便在任何地方重現該環境

在docker-compose.yml文件中定義組成應用程序的服務,以便各個服務在一個隔離的環境中一起運行。

運行doker-compose up命令,啟動並運行整個應用程序

 

docker-compose.yml常用命令

通過 .env 文件來為 docker-compose.yml 文件引用的所有環境變量設置默認值,詳細參考 https://www.cnblogs.com/sparkdev/p/9826520.html

示例如下:

version: "3.3"
services:
  eureka:
    build: .
    ports:
      - "8761:8761"
  volumes:
    - /opt/data:/var/lib/mysql

build 構建,后面跟Dockerfile路徑

ports 功能類似於 docker run -p

volumes 卷掛載路徑設置,通常作為路徑映射(host:container)

volumes_from 從另一個服務或容器掛載卷,可指定只讀ro,讀寫rw,默認是讀寫rw

 

docker-compose常用命令

build 構建或重新構建服務。

kill 停止指定服務的容器,例如:docker-compose kill eureka

logs 查看服務的日志輸出 

port 打印綁定的公共端口,例如:docker-compose port eureka 8761,這樣就可以輸出eureka服務8761端口綁定的公共端口

ps 列出所有容器,例如:docker-compose ps

pull 下載服務鏡像

rm 刪除指定服務的容器,例如:docker-compose rm eureka

run 在一個服務上執行一個命令,例如:docker-compose run web bash

scale 設置指定服務運行容器的個數,以 service=num的形式指定,實例:docker-compose scale user=3 movie=3

start 啟動指定服務已存在的容器,例如:docker-compose start eureka

stop 停止已運行的容器,例如:docker-compose stop eureka

up 構建、創建、重新創建、啟動、連接服務的相關容器,所有連接的服務都會啟動,除非它們已經運行。

docker-compose up 命令會聚合所有容器的輸出,當命令退出時,所有容器都會停止,后台運行 docker-compose up -d

 

docker-compse的網絡設置

默認情況下,Compose 會為應用創建一個網絡,服務的每個容器都會加入該網絡中,這樣,容器就可以被該網絡中的其他容器訪問,不僅如此,該容器還能已服務名作為hostname被其他容器訪問。

默認情況下,應用程序的網絡名稱基於Compose的工程名稱,而工程名稱基於docker-compose.yml所在目錄的名稱,

如需修改工程名稱,可使用--project-name標識或COMPOSE_PROJECT_NAME環境變量

默認的是bridge網絡架構

 

Docker Compose,Docker Swarm,Kubernetes之間的區別:

Docker Compose是一個基於Docker的單主機容器編排工具,不能去啟動其他主機上的Docker容器

Docker Swarm和Kubernetes是基於Dcoker的跨主機的容器管理平台,

Docker Swarm則是由Docker 公司研發的,在與Kubernetes競爭中已經失勢,不必學習了。

所以,簡單了解一下Docker Compose,深入研究Kubernetes

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM