天天看點

開發者學堂課程幹貨總結——Spring Boot 2.5.x開發實戰(十)

哈喽各位同學們大家好呀,小編今天為大家分享開發者學院中課程“Spring Boot2.5實戰Docker容器”幹貨總結哦,并且是Spring Boot 2.5.x開發實戰的最後一篇~Spring Boot 2.5.x開發實戰可是Java中級工程師必備課程!

課程連結以及圖譜位址小編已經為大家指路了,搭配學習效果更佳👇

課程名稱:Spring Boot 2.5.x開發實戰

課程位址:

https://developer.aliyun.com/learning/course/71?spm=a2c6h.21254954.0.0.4e905907uoWZzr

圖譜名稱:Alibaba Java 技術圖譜

圖譜位址:

https://developer.aliyun.com/graph/java?spm=a2c6h.21110250.J_5703890090.6.700e3c67EjOBeJ

明日将為大家分享新課程“Dubbo 分布式服務治理實踐”,敬請期待吧!

Spring Boot2.5實戰Docker容器

(一)Spring Boot2.5.x部署方式 

由于Spring Boot内嵌了很多Web容器,現在部署Spring Boot應用相對比較簡單。這裡指的Web應用可以用這個方法部署。如果要部署普通的應用,比如指令方式,也可以用doctor方式或者用其他的部署工具結合伺服器或者遠端的雲端伺服器進行自動化部署。 

開發者學堂課程幹貨總結——Spring Boot 2.5.x開發實戰(十)

(二)Spring Boot實戰Docker容器DockerHub 

開發者學堂課程幹貨總結——Spring Boot 2.5.x開發實戰(十)

Docker作為一個容器工具,它實際是一個平台、一個生态,它包括Docker的伺服器端、用戶端以及倉庫和可視化管理界面。 

我給大家講課的時候用的是windows10,兩年前windows1不支援Docker,現在基本上就可以了,因為要開虛拟化技術。如果你用Linux環境或者Mac OS,Docker環境是比較容易安裝。 

開發者學堂課程幹貨總結——Spring Boot 2.5.x開發實戰(十)

DockerHub本身是個類似于一個鏡像的倉庫,隻不過這個伺服器基本上都在美國。國内的話像阿裡跟Docker簽了合作協定,阿裡雲建構了一個Docker中國大陸的鏡像服務,可以建立Docker的私有倉庫。阿裡雲新增賬號後在自己的賬号裡面可以看到Docker的一個鏡像。Docker應用程式的一個建構和釋出标準化大規模叢集的部署提供了非常便捷的操作方式。 

開發者學堂課程幹貨總結——Spring Boot 2.5.x開發實戰(十)

Docker本身也有自己的管理工具叫Docker swarm。當有了Docker專屬的DockerHub位址之後,再想上傳到鏡像的時候,可以上傳到阿裡雲的Docker倉庫裡面。 

在上傳到阿裡雲倉庫之前要先建構鏡像,比如MySQL、MongoDB、Redis或者Java的一些标準主機鏡像以外,也可以建構自己的鏡像。 

(三)阿裡雲Docker鏡像倉庫 

1. 國内第一個提供Docker服務的雲計算公司2. 2016年雲栖大會宣布與Docker官方合作3. 提供Docker Images鏡像加速4. 提供景象倉庫5. 免費注冊使用6. Docker Hub中國站與Docker Hub完全一緻 

(四)Docker分布式叢集架構 

開發者學堂課程幹貨總結——Spring Boot 2.5.x開發實戰(十)

Docker主要是友善開發和運維團隊做大規模叢集化部署。 

(五)Docker容器常用指令 

1. 搜尋鏡像:sudo docker search java2. 拉取鏡像:sudo docker pull java3. 運作鏡像:docker run4. 擷取幫助:docker help5. 建構鏡像:docker build6. 送出鏡像:docker commit7. 建立鏡像:docker create8. 運作鏡像:docker run9. 重新開機鏡像:docker restart10.查詢全部:docker images11.檢視資訊:docker info12.推送鏡像:docker push 

DockerFile指令 

Docker建構的早期需要DockerFile,就是Docker建構了一個指令檔案。Docker基于這個檔案建構鏡像并且打包鏡像。 

1. Docker鏡像配置檔案2. 腳本編寫3. 腳本檔案4. 一系列指令和參數構成的腳本,5. 這些指令應用于基礎鏡像6. 并最終建立一個新的鏡像 

DockerFile重要指令 

1. FROM 指定基礎鏡像檔案  

2. MAINTAINER authors_name 作者  

3. RUN 運作特殊指令,比如下載下傳JDK  

4. SER指令用于設定運作容器的UID  

5. VOLUME 指定容器通路目錄  

6. WORKDIR 運作目錄  

7. ENV 環境變量,如ENV LANG en_US.UTF-8  

8. CMD 容器執行的指令 CMD "echo" "Hello docker!"  

9. ADD 複制檔案到目标檔案夾  

10.COPY 複制,類似ADD  

11.EXPOSE 暴露端口  

12.ENTRYPOINT 入口,指令,隻有一個不能被Run覆寫 

(六)Spring Boot 2.5 Docker制作鏡像 

環境需求  

•docker (1.6.0 or above) 

•jdk 1.8  

•Maven 3.0+或者Gradle 2.3+ 

Spring Boot 2.4全新docker建構工具 

•Spring Boot 2.4 推出了自己的 docker 建構工具 

•一鍵建構Docker鏡像,無需Dockerfile 

•之前工具spotify 、fabric8,配置插件使用,需要Dockerfile 

• jib-maven-plugin是Google18 年 7 月釋出的Java 鏡像工具(支援 

Maven 和 Gradle),也無需Dockerfile 

•整合在原有的 spring-boot-maven-plugin 中, 

•隻需要配置對應目标倉庫和主機資訊即可完成鏡像建構。 

•新指令:mvn spring-boot:build-image 

(七)示範 

Dockerfile制作鏡像 

•FROM java:8  

•VOLUME /tmp  

•ADD java-spring-boot-docker-0.1.0.jar app.jar  

•RUN bash -c 'touch /app.jar'  

•ENTRYPOINT ["java","Djava.security.egd=file:/dev/./urandom","jar","/app.jar"] 

Build Docker Image with Maven 

• <plugin>  

• <groupId>com.spotify</groupId>  

• <artifactId>docker-maven-plugin</artifactId>  

• <version>0.2.3</version>  

• <configuration>  

• <imageName>${docker.image.prefix}/${project.artifactId}</imageName>  

• <dockerDirectory>src/main/docker</dockerDirectory>  

• <resources> • <resource> • <targetPath>/</targetPath> 

• <directory>${project.build.directory}</directory>  

• <include>${project.build.finalName}.jar</include>  

• </resource>  

• </resources>  

• </configuration>  

• </plugin> 

Maven打包 

開發者學堂課程幹貨總結——Spring Boot 2.5.x開發實戰(十)
開發者學堂課程幹貨總結——Spring Boot 2.5.x開發實戰(十)

(八)進階面試題 

1. Docker是什麼?解決什麼問題?  

2. Docker的優勢?  

3. Swarm工具和Docker的關系  

4. K8s優勢是什麼?  

5. 如何安裝Docker容器?  

6. 如何制作、推送Docker鏡像?  

7. 如何搜尋、拉取、啟動Docker鏡像?  

8. Docker如何容器部署Spring Boot 2.5.x和微服務