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

看了《微服務那些事》以後,Spring boot和Spring Cloud的關係理清楚了,Spring cloud各個模塊的做用也瞭解了。html

可是,Spring cloud 與Docker的關係,Spring boot 與 Docker的關係,Spring cloud 的詳細使用,仍是不瞭解。java

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

這本書一共14章nginx

第一章、微服務架構概述web

第二章、Spring cloud 簡介spring

第三章、開始使用Spring cloudsql

第四章、微服務註冊與發現 Eurekadocker

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

第六章、Feign實現REST調用bash

第七章、Hystrix實現容錯處理

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

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

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

第11章、常見問題與總結

第12章、Docker

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

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

第一章到第11章已經大致瞭解了,所以略看。

重點看十二、1三、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 文件引用的全部環境變量設置默認值,詳細參考 http://www.javashuo.com/article/p-mmgkvxvh-x.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

相關文章
相關標籤/搜索