容器化基礎
- 使用 linux 通過 java -jar 方式部署單體架構,war 包丟tomcat。
- 使用 Docker部署微服務架構。
相關文檔:
簡介
雲原生:Java,C等開發的應用叫原生應用,部署上雲。原生應用上雲的整個過程,以及雲上的一系列解決方案。
部署雲計算資源有三種不同的方法:公共雲、私有雲和混合雲。採用的部署方法取決於業務需求。
擴展:VPC
容器化基礎
解決的問題
-
應用構建
-
- Java、C++、JavaScript
- 打成軟體包
- Java、C++、JavaScript
-
- .exe
- docker build .... 鏡像
- .exe
-
應用分享
-
- 所有軟體的鏡像放到一個指定地方 docker hub
- Android,應用市場
- 所有軟體的鏡像放到一個指定地方 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應用
程式碼地址://gitee.com/zwtgit/dockerdemo
準備工作
附帶:Docker安裝Redis,部署影片,//www.bilibili.com/video/BV13Q4y1C7hS?p=20
去Docker hub,找到鏡像,裡面有詳細的文檔。


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
