人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動(dòng)態(tài)

docker部署可執(zhí)行jar包的思路與完整步驟

發(fā)布日期:2022-07-15 19:42 | 文章來源:源碼中國

我們構(gòu)建的是運(yùn)行bash文件命令的鏡像,而不是構(gòu)建jar包的鏡像。好處就是,jar包有更新,只需替換jar包或者bash文件,而無須重新構(gòu)建鏡像。

通常,用docker承載運(yùn)行java程序,是將jar包先構(gòu)建鏡像,然后創(chuàng)建docker容器運(yùn)行。如果jar包更新,就需要?jiǎng)h除原鏡像,重新來一遍,耗時(shí)耗力。有一個(gè)方案是,我們創(chuàng)建一個(gè)bash文件(linux的批處理文件),其內(nèi)容是運(yùn)行我們的jar包。然后創(chuàng)建運(yùn)行該bash文件的docker鏡像、docker容器。這樣的好處是很明顯的,jar包有更新,只替換jar包,甚至jar包改名了,也只是更改bash文件的內(nèi)容而已,而鏡像、容器,不會(huì)受到任何影響,無需作出任何改動(dòng)。

一、思路

1、將docker容器中的指定文件夾掛載到宿主機(jī)上,更新jar包只需上傳到宿主機(jī)指定路徑,方便更新

2、利用bash文件運(yùn)行jar包,并構(gòu)建該bash的鏡像,代替構(gòu)建直接運(yùn)行jar包的鏡像,利于鏡像與jar包解耦。
例如,app-1.0.0.jar 升級(jí)到 app-2.0.0.jar,只須更改bash文件的內(nèi)容,而無須構(gòu)建新的鏡像。

二、準(zhǔn)備工作

1、創(chuàng)建存放docker配置文件、jar包的文件夾

在宿主機(jī)上,創(chuàng)建文件夾:/home/admin/app,用于存放bash文件和jar包。然后在該文件夾下,創(chuàng)建bash文件和容器配置文件

2、創(chuàng)建bash文件

vi run.sh
java -jar /usr/data/app-1.0.0.jar

/usr/data是docker容器內(nèi)的路徑

我們不必真的到容器內(nèi)創(chuàng)建這個(gè)路徑

后面會(huì)將此路徑掛載到當(dāng)前文件夾:/home/admin/app

3、創(chuàng)建容器配置文件

vi Dockerfile
FROM java:8
EXPOSE 8081
ENTRYPOINT ["sh","/usr/data/run.sh"]

8081是我們這個(gè)jar包的對(duì)外端口

最后一句,有網(wǎng)上教程寫的是 CMD [“sh”,“-c”,“/usr/data/hello.sh”],但不知道為什么,我這樣寫的話,容器運(yùn)行后會(huì)提示沒有權(quán)限!

二、構(gòu)建鏡像

仍然在/home/admin/app下,構(gòu)建鏡像。注意最后一個(gè)“.”,表示 Dockerfile 文件在當(dāng)前目錄下。

docker build -t myapp:1.0.0 .

三、創(chuàng)建容器并運(yùn)行

docker run -d -it --name=myapp -p 8081:8081 -v /home/admin/app:/usr/data myapp:1.0.0

docker引擎重啟后自動(dòng)運(yùn)行(也可以理解為操作系統(tǒng)重啟后自動(dòng)運(yùn)行,如果docker是開機(jī)自動(dòng)運(yùn)行的話)

docker run --restart=always -d -it --name=myapp -p 8082:8081 -v /home/admin/app:/usr/data myapp:1.0.0

-v,將容器內(nèi)的/usr/data掛載到宿主機(jī)的/home/admin/app。以后jar包有更新,丟到宿主機(jī)的/home/admin/app,然后重啟容器即可。

-d: 后臺(tái)運(yùn)行容器,并返回容器ID;

-d, --detach=false Run container in background and print container ID

-i: 以交互模式運(yùn)行容器,通常與 -t 同時(shí)使用;

-i, --interactive=false Keep STDIN open even if not attached

-t: 為容器重新分配一個(gè)偽輸入終端,通常與 -i 同時(shí)使用;

-t, --tty=false Allocate a pseudo-TTY

四、刪除多余或失敗的容器、鏡像

以上步驟,可能存在波折,不小心就創(chuàng)建了許多并不稱心如意的容器和鏡像,占用了心水名稱和端口,必先刪之而后快。

1、觀察已經(jīng)有哪些容器

docker ps -a

加上 -a 參數(shù),可以列出沒有在運(yùn)行的容器。

2、刪除指定容器

docker rm $name 或者 容器ID

3、觀察已經(jīng)有哪些鏡像

docker images

4、刪除指定鏡像

docker rmi -f $name 或者 鏡像ID

要?jiǎng)h除鏡像,首先要?jiǎng)h除它派生的容器。

五、docker世界中的一些術(shù)語

我現(xiàn)在是這么理解的:

docker是一個(gè)程序,它不是容器,而是容器引擎。

我們的程序要用docker來跑,首先要?jiǎng)?chuàng)建一個(gè)開啟我們程序的鏡像。

docker利用這個(gè)鏡像,開啟并運(yùn)行容器。

容器是鏡像的實(shí)例,同一個(gè)鏡像可以派生出多個(gè)實(shí)例。

六、補(bǔ)充

如上所述,我的思路是將容器內(nèi)的文件夾掛載到宿主機(jī)的文件夾上,方便以后更新維護(hù)。如果沒有這層考慮,其實(shí)也可以將jar包直接塞到容器里運(yùn)行,不過一旦jar包有更新,需要重新構(gòu)建鏡像和容器。

直接塞到容器里運(yùn)行的方法是Dockerfile內(nèi)容稍有點(diǎn)不同:

FROM java:8
MAINTAINER chenqu
ADD demo-0.0.1-SNAPSHOT.jar demo.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","demo.jar"]

總結(jié)

到此這篇關(guān)于docker部署可執(zhí)行jar包的思路與完整步驟的文章就介紹到這了,更多相關(guān)docker部署可執(zhí)行jar包內(nèi)容請(qǐng)搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!

國外服務(wù)器租用

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。

實(shí)時(shí)開通

自選配置、實(shí)時(shí)開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對(duì)1客戶咨詢顧問

在線
客服

在線客服:7*24小時(shí)在線

客服
熱線

400-630-3752
7*24小時(shí)客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部