日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

docker化你的java应用(下)

發(fā)布時間:2025/3/21 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 docker化你的java应用(下) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言


在《docker化你的java應(yīng)用(上)》中,我們已經(jīng)初步接觸了docker的核心概念與思想,本篇博客將對docker進(jìn)行實踐,會介紹一些docker常用的命令,并通過docker化一個java項目來進(jìn)一步認(rèn)識docker。

?

安裝docker


我們可以通過docker的官網(wǎng)(https://www.docker.com/community-edition#/download)來選擇在linux/mac/windows上進(jìn)行安裝,不過在國內(nèi)下載比較慢。給大家提供一個高速下載地址:http://get.daocloud.io/,具體的安裝方法,網(wǎng)上有比較多的教程,這里就不介紹了。

docker安裝成功

?

運行docker版本的hello world


要運行docker版本的hello world,那么自然需要先獲取鏡像,注意到docker官方給我們提供了一個鏡像中心:https://hub.docker.com/,一般公司內(nèi)部也會給我們提供一個公司專用的鏡像中心。

hello-world鏡像


docker pull


docker pull :?從鏡像倉庫中拉取或者更新指定鏡像,鏡像除了名稱之外,還有一個tag的概念,如果不提供tag,就是表示latest。

docker images?: 列出本地鏡像。

拉取依賴鏡像 公司內(nèi)部鏡像搜索示例


運行hello-world


docker run?:創(chuàng)建一個新的容器并運行一個命令

在圖中,我們已經(jīng)看到了輸出,就說明hello-world運行成功了。

?

不可不知的docker網(wǎng)絡(luò)


在實際開發(fā)中,要知道我們的服務(wù),一般是在某個端口進(jìn)行監(jiān)聽,一直在后臺運行的,那么就涉及到宿主機/宿主機中的容器它們之間的網(wǎng)絡(luò)問題了。

docker的網(wǎng)絡(luò)類型分3種:bridge,host,none。(這里和vmware的網(wǎng)絡(luò)設(shè)置部分非常相似)

bridge,就是橋接模式,docker容器會有自己獨立的network namespace,也就是會有虛擬的ip和port,那么如何通過宿主機來訪問容器內(nèi)部的端口呢?這里就涉及到一個技術(shù):端口映射了

host,不會分配獨立的network namespace,而是和宿主機進(jìn)行共用網(wǎng)絡(luò)。

none,不使用網(wǎng)絡(luò),docker容器不會和外界進(jìn)行通訊。

docker網(wǎng)絡(luò)

?

docker化一個springboot項目


要docker化一個項目,首先得提供一個Dockerfile文件,然后進(jìn)行鏡像制作。我們直接來看一個實際項目中的Dockerfile示例:

Dockerfile的實例

?

首先,我們需要一個Dockerfile的文件以及代碼(jar or war)。

Dockerfile的第一個必須是FROM指令,明確指出繼承自哪一個基礎(chǔ)鏡像,這里是公司內(nèi)部的一個鏡像。(因為是springboot項目,因此只需要依賴jre即可,如果你的項目是一個普通的java web項目,那么可以考慮繼承自tomcat的鏡像,因為tomcat鏡像依賴jdk鏡像)

通過ARG來定義了一些變量,以供后續(xù)引用。

通過USER指令指定運行容器時的用戶以及用戶組,通過WORKDIR指定運行容器時的工作目錄,這也說明容器就像一個mini linux一樣。

通過ENV來定義容器運行時的一些環(huán)境變量信息。

通過COPY指令復(fù)制宿主機中的工程代碼信息到目的地容器中。

ENTRYPOINT表示容器啟動后會執(zhí)行的命令,這里可以看到,容器啟動后,會執(zhí)行一個jar包(一個springboot項目)

制作項目的鏡像


制作鏡像

docker build指令需要指明dockerfile的路徑,同時制作鏡像的時候,需要指明鏡像的名稱和tag。

?

讓鏡像跑起來成為容器


docker run

?

docker ps和docker stop

?

docker run會運行鏡像生成容器,并返回容器id(非常長的一串id,那么后續(xù)的一些對容器的操作中,我們可以提供一部分容器id前綴就可以完成匹配,例如圖中的docker stop操作)

注意docker run指定了2個端口:8083和8080,8083是指宿主機的端口,8080是springboot項目中的啟動端口,也就是說訪問容器的8080端口將通過宿主機的8083端口完成,這就是上一篇文章提及的端口映射技術(shù)。

?

進(jìn)入容器看一看


docker exec

?

訪問部署在容器中的項目


部署訪問成功

?

好了,到這里docker的只是初步就介紹完畢了,相信對docker大家應(yīng)該有一個感性的認(rèn)識了,see u next time
?

總結(jié)

以上是生活随笔為你收集整理的docker化你的java应用(下)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。