七、Docker實(shí)戰(zhàn)
這里我使用之前的軟件實(shí)踐項(xiàng)目來(lái)進(jìn)行Docker從構(gòu)建到部署一整套實(shí)驗(yàn)。
Step1:Maven打包
進(jìn)入項(xiàng)目目錄,在Terminal運(yùn)行Maven命令,通過Maven構(gòu)建SpringBoot Web項(xiàng)目,將其打成Jar包。
mvn package -Dmaven.test.skip=true
image-20220616094117236
發(fā)現(xiàn)項(xiàng)目目錄下生成了一個(gè)可執(zhí)行Jar包,這里我們可以通過jar包來(lái)測(cè)試。
Step2:上傳Jar包
將Jar包通過FTP工具上傳到服務(wù)器~/healthySystem
目錄下
Step3 :編寫Dockerfile
~/healthySystem
目錄下,使用vim Dockerfile
創(chuàng)建一個(gè)Dockerfile文件,然后在文件編輯如下內(nèi)容:
#根據(jù)Java15為基礎(chǔ)鏡像
FROM openjdk:11.0.15-oraclelinux7
MAINTAINER tyf
#RUN yum install redis && yum install mysql
#將當(dāng)前目錄下jar包復(fù)制到Docker鏡像中
#將需要額外加載的配置文件加入鏡像
COPY *.jar /app.jar
COPY *.yml /application.yml
#暴露出的端口
EXPOSE 8079
ENTRYPOINT ["java", "-jar", "/app.jar" ~
修改完畢后,保存退出。
Step4:構(gòu)建Docker鏡像
在~/healthySystem
目錄下執(zhí)行:
docker build -t healthy:1.0 .
結(jié)果顯示Successfully built ......
,構(gòu)建Images成功
Step5: 測(cè)試鏡像
docker run --name healthy --network host healthy:1.0 #執(zhí)行新實(shí)例
image-20220617195045392
執(zhí)行docker ps
查看容器狀態(tài)
image-20220617195129284
打開服務(wù)器防火墻,訪問http://81.68.239.206:8093/welcome.htm
,正常啟動(dòng)。
image-20220617195245538
Step5: 上傳至阿里云倉(cāng)庫(kù)
這里使用我們上述使用的阿里云鏡像倉(cāng)庫(kù)和中心倉(cāng)庫(kù),在阿里云鏡像倉(cāng)庫(kù)創(chuàng)建完成相應(yīng)的遠(yuǎn)程倉(cāng)庫(kù)后,按照官方操作步驟來(lái)完成鏡像推送。
-
登陸至阿里云 Docker Registry
docker login --username=譚永鋒nb registry.cn-shanghai.aliyuncs.com
image-20220617201312628
-
更改鏡像Tag
#docker tag [ImageId] registry.cn-shanghai.aliyuncs.com/sleepytans/webapp:[鏡像版本號(hào)] docker tag 9e78dbdd6dd8 registry.cn-shanghai.aliyuncs.com/sleepytans/webapp:1.0
image-20220617201707730
-
上傳鏡像
#docker push registry.cn-shanghai.aliyuncs.com/sleepytans/webapp:[鏡像版本號(hào)] docker push registry.cn-shanghai.aliyuncs.com/sleepytans/webapp:1.0
image-20220617201954652
-
登陸阿里云查看遠(yuǎn)程鏡像倉(cāng)庫(kù),顯示上傳成功。
image-20220617202025429
Step6:測(cè)試部署
網(wǎng)站部署步驟:https://github.com/TanYongF/healthyDay
基本流程:
- 安裝Mysql、Redis
- 配置項(xiàng)目配置文件
- 執(zhí)行下面命令
- 訪問
http://ip:8093
docker run --name healthy --network host registry.cn-shanghai.aliyuncs.com/sleepytans/webapp:1.0
八、實(shí)驗(yàn)總結(jié)
本次大作業(yè)通過學(xué)習(xí)Docker基本安裝、數(shù)據(jù)管理、網(wǎng)絡(luò)等基礎(chǔ)知識(shí),對(duì)Docker的誕生由來(lái)以及解決了多依賴項(xiàng)目部署復(fù)雜的問題,同時(shí)針對(duì)特定內(nèi)容對(duì)Docker例如網(wǎng)絡(luò)模式,其基于底層隔離和資源限制的基礎(chǔ)——CGroup以及Namespace技術(shù)有了一定的理解。
同時(shí)又對(duì)之前的軟件實(shí)習(xí)項(xiàng)目的部署引入Docker進(jìn)行改造,通過編寫Dockerfile以及Docker-compose文件構(gòu)建出了項(xiàng)目對(duì)應(yīng)的鏡像并且上既然到了云端,從實(shí)踐方面體會(huì)到了Docker對(duì)實(shí)際項(xiàng)目運(yùn)維部署方面帶來(lái)的巨大便捷。
由于自身的學(xué)習(xí)方向是Java后端方向,對(duì)于現(xiàn)在接觸比較多的微服務(wù)、集群來(lái)講,Docker等云原生工具大大降低配置部署難度,同時(shí)也讓我對(duì)DevOps開發(fā)流程的理解逐漸加深,也促使我將將傳統(tǒng)的開發(fā)思想逐漸轉(zhuǎn)變成容器化思想。但是鑒于時(shí)間緊迫,對(duì)Docker底層原理的細(xì)節(jié)了解還不是很充分,同時(shí)對(duì)于業(yè)界比較流行的Kubernetes(k8s)等Docker容器編排工具還沒有具體的體驗(yàn)學(xué)習(xí),但是學(xué)無(wú)止境,未來(lái)我也會(huì)繼續(xù)加深對(duì)其中云原生技術(shù)的深入學(xué)習(xí),努力將自己打造成為新一代DevOps工程師。
參考資料
-
開源軟件
+關(guān)注
關(guān)注
0文章
210瀏覽量
15971 -
編程
+關(guān)注
關(guān)注
88文章
3638瀏覽量
94010 -
Docker
+關(guān)注
關(guān)注
0文章
492瀏覽量
11974
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
一文帶你搞懂Docker容器的核心基石Cgroups
一文帶你入門Docker容器
![<b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>帶你</b>入門<b class='flag-5'>Docker</b><b class='flag-5'>容器</b>](https://file1.elecfans.com/web2/M00/89/33/wKgaomR9hUqAM-GMAAAXt6AYIjY421.jpg)
如何使用 Docker容器化技術(shù)
ARM平臺(tái)實(shí)現(xiàn)Docker容器技術(shù)
如何在Docker中創(chuàng)建容器
理解Docker容器并暢玩docker
Docker容器管理命令(一)
一文帶你讀懂耦合與退耦,上拉與下拉資料下載
![<b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>帶你</b><b class='flag-5'>讀懂</b>耦合與退耦,上拉與下拉資料下載](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
一文帶你讀懂Docker容器 1
![<b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>帶你</b><b class='flag-5'>讀懂</b><b class='flag-5'>Docker</b><b class='flag-5'>容器</b> 1](https://file.elecfans.com/web2/M00/8E/14/poYBAGPct4aAU2RWAABwznxVsDY902.jpg)
一文帶你讀懂Docker容器 2
![<b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>帶你</b><b class='flag-5'>讀懂</b><b class='flag-5'>Docker</b><b class='flag-5'>容器</b> 2](https://file.elecfans.com/web2/M00/8E/14/poYBAGPct4aAciaMAAAaHsRr-oA390.jpg)
評(píng)論