- 使用 linux 通過 java -jar 方式部署單體架構,war 包丟tomcat。
- 使用 Docker部署微服務架構。
相關文件:
簡介
雲原生:Java,C等開發的應用叫原生應用,部署上雲。原生應用上雲的整個過程,以及雲上的一系列解決方案。
部署雲端計算資源有三種不同的方法:公共雲、私有云和混合雲。採用的部署方法取決於業務需求。
擴充套件:VPC
容器化基礎
解決的問題
-
應用構建
-
- Java、C++、JavaScript
- 打成軟體包
- Java、C++、JavaScript
-
- .exe
- docker build .... 映象
- .exe
-
應用分享
-
- 所有軟體的映象放到一個指定地方 docker hub
- 安卓,應用市場
- 所有軟體的映象放到一個指定地方 docker hub
-
應用執行
-
- 統一標準的 映象
- docker run
- 統一標準的 映象
-
.......
資源隔離
-
cpu、memory資源隔離與限制
-
訪問裝置隔離與限制
-
網路隔離與限制
-
使用者、使用者組隔離限制
-
......
架構
-
Docker_Host:
-
- 安裝Docker的主機
-
Docker Daemon:
-
- 執行在Docker主機上的Docker後臺程式
-
Client:
-
- 操作Docker主機的客戶端(命令列、UI等)
-
Registry:
-
- 映象倉庫
- Docker Hub
- 映象倉庫
-
Images:
-
- 映象,帶環境打包好的程式,可以直接啟動執行
-
Containers:
-
- 容器,由映象啟動起來正在執行中的程式
互動邏輯
裝好Docker,然後去 軟體市場 尋找映象,下載並執行,檢視容器狀態日誌等排錯。
實戰圖
去Docker hub,找到映象。
建立&構建一個Java應用
程式碼地址:https://gitee.com/zwtgit/dockerdemo
準備工作
附帶:Docker安裝Redis,部署視訊,https://www.bilibili.com/video/BV13Q4y1C7hS?p=20
去Docker hub,找到映象,裡面有詳細的文件。
啟動,https://hub.docker.com/_/redis
docker run --help
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
#redis使用自定義配置檔案啟動
docker run -v /data/redis/redis.conf:/etc/redis/redis.conf \
-v /data/redis/data:/data \
-d --name myredis \
-p 6379:6379 \
redis:latest redis-server /etc/redis/redis.conf
應用打包
編寫Dockerfile將自己的應用打包映象。
以前
Java為例
-
SpringBoot打包成可執行jar
-
把jar包上傳給服務
-
伺服器執行java -jar
在外掛中打包後可以看到jar或者war相應的包以及位置,可以在本地使用java -jar命令測試。
現在
所有機器都安裝Docker,任何應用都是映象,所有機器都可以執行。
我這裡打的war包。
FROM openjdk:8-jdk-slim
LABEL maintainer=leifengyang
COPY target/*.war /app.war
ENTRYPOINT ["java","-jar","/app.war"]
docker構建,最後一個點表示工作在當前目錄。
docker build -t java-demo:v1.0 .
啟動容器
docker run -d -p 8080:8080 --name mydockerfiletest-app java-demo:v1.0
# 登入docker hub
docker login
#給舊映象起名
docker tag java-demo:v1.0 leifengyang/java-demo:v1.0
# 推送到docker hub
docker push leifengyang/java-demo:v1.0
# 別的機器
docker pull leifengyang/java-demo:v1.0
# 別的機器執行
docker run -d -p 8080:8080 --name myjava-app java-demo:v1.0