將jar包打包爲docker鏡像

本文主要講如何將一個jar包打包成一個docker鏡像,並運行起來,這裏我以metabase.jar爲例,這個jar包可以直接使用下面命令進行運行:

java -jar metabase.jar

接下來將他打包成docker鏡像,直接在docker中運行,第一步沒有安裝docker的首先要安裝docker,安裝docker不爲本教程重點,可點擊如下鏈接:docker介紹和安裝

一,編寫dockerfile

1.這個jar包可以放到你想放的地方,然後在與jar包相同的文件夾中運用下邊命令創建dockerfile文件並進行編輯

touch DockerFile

2.添加如下內容,當然如果是其它jar包要記得更換名字,不要照抄
在這裏插入圖片描述

#penjdk:8-jre 爲基礎鏡像,來構建此鏡像,可以理解爲運行的需要基礎環境
FROM openjdk:8-jre
#WORKDIR指令用於指定容器的一個目錄, 容器啓動時執行的命令會在該目錄下執行。
WORKDIR /opt/docker/images/metabase/
#將當前metabase.jar 複製到容器根目錄下
ADD metabase.jar metabase.jar
#將依賴包 複製到容器根目錄/libs下,metabase.jar已不再需要添加其它jar包
#ADD libs /libs
#暴露容器端口爲3000 Docker鏡像告知Docker宿主機應用監聽了3000端口
EXPOSE 3000
#容器啓動時執行的命令
CMD java -jar metabase.jar

創建後:
在這裏插入圖片描述

二,使用docker build構建鏡像

注意:這個命令是在我的DockerFile所在目錄執行的,還有別忘記了命令後邊的空格和點

//docker build
// . 表示當前目錄 -f 參數指定Dockerfile文件  -t 表示 製作的鏡像:tag  
docker build -f DockerFile  -t  test/metabase:1.0.0  .

構建完成後使用以下命令查看是否有我們的test/metabase鏡像

docker images

以下是我的查詢結果:
openjdk是我們編寫DockerFile時添加的依賴鏡像,所以docker會自動根據dockerfile將openjdk鏡像下拉下來
在這裏插入圖片描述

三,運行docker鏡像

//-d 表示後臺運行容器 ,-p表示將宿主機的3000端口映射到容器中的3000端口
docker run -d -p 3000:3000 test/metabase:1.0.0

一個鏡像每run一次就會新增一個容器,也就是一個鏡像可以對應多個容器
然後我們查看容器發現已經有了docker容器,使用以下命令

docker ps -a

在這裏插入圖片描述

四,啓動停止容器

啓動(containerid就是docker ps -a 查詢出來的containerid):

docker start containerid

因爲我們構建這個容器時(也就是run鏡像時)使用了-d,所以運行這個容器會返回一個id,比如:
在這裏插入圖片描述
我們可以使用以下命令來查看這個容器運行的後臺日誌文件(注意這個日誌文件只是靜態的,我們需要多次執行這個命令來查看實時狀態):

docker logs id

在這裏插入圖片描述
可以看到我已經執行成功了,這裏穿插一個小問題,其實我是10:35啓動的,docker時間與我們中國的真實時間晚了8小時,解決方案可以看我這篇文章:docker容器內時間相差8小時問題
在這裏插入圖片描述
所以我可以直接通過ip和端口訪問我這個jar包上的系統了:
在這裏插入圖片描述

發佈了49 篇原創文章 · 獲贊 20 · 訪問量 7578
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章