docker化你的java应用(下)
前言
在《docker化你的java應用(上)》中,我們已經初步接觸了docker的核心概念與思想,本篇博客將對docker進行實踐,會介紹一些docker常用的命令,并通過docker化一個java項目來進一步認識docker。
?
安裝docker
我們可以通過docker的官網(https://www.docker.com/community-edition#/download)來選擇在linux/mac/windows上進行安裝,不過在國內下載比較慢。給大家提供一個高速下載地址:http://get.daocloud.io/,具體的安裝方法,網上有比較多的教程,這里就不介紹了。
docker安裝成功?
運行docker版本的hello world
要運行docker版本的hello world,那么自然需要先獲取鏡像,注意到docker官方給我們提供了一個鏡像中心:https://hub.docker.com/,一般公司內部也會給我們提供一個公司專用的鏡像中心。
hello-world鏡像
docker pull
docker pull :?從鏡像倉庫中拉取或者更新指定鏡像,鏡像除了名稱之外,還有一個tag的概念,如果不提供tag,就是表示latest。
docker images?: 列出本地鏡像。
拉取依賴鏡像 公司內部鏡像搜索示例
運行hello-world
docker run?:創建一個新的容器并運行一個命令
在圖中,我們已經看到了輸出,就說明hello-world運行成功了。
?
不可不知的docker網絡
在實際開發中,要知道我們的服務,一般是在某個端口進行監聽,一直在后臺運行的,那么就涉及到宿主機/宿主機中的容器它們之間的網絡問題了。
docker的網絡類型分3種:bridge,host,none。(這里和vmware的網絡設置部分非常相似)
bridge,就是橋接模式,docker容器會有自己獨立的network namespace,也就是會有虛擬的ip和port,那么如何通過宿主機來訪問容器內部的端口呢?這里就涉及到一個技術:端口映射了。
host,不會分配獨立的network namespace,而是和宿主機進行共用網絡。
none,不使用網絡,docker容器不會和外界進行通訊。
docker網絡?
docker化一個springboot項目
要docker化一個項目,首先得提供一個Dockerfile文件,然后進行鏡像制作。我們直接來看一個實際項目中的Dockerfile示例:
Dockerfile的實例?
首先,我們需要一個Dockerfile的文件以及代碼(jar or war)。
Dockerfile的第一個必須是FROM指令,明確指出繼承自哪一個基礎鏡像,這里是公司內部的一個鏡像。(因為是springboot項目,因此只需要依賴jre即可,如果你的項目是一個普通的java web項目,那么可以考慮繼承自tomcat的鏡像,因為tomcat鏡像依賴jdk鏡像)
通過ARG來定義了一些變量,以供后續引用。
通過USER指令指定運行容器時的用戶以及用戶組,通過WORKDIR指定運行容器時的工作目錄,這也說明容器就像一個mini linux一樣。
通過ENV來定義容器運行時的一些環境變量信息。
通過COPY指令復制宿主機中的工程代碼信息到目的地容器中。
ENTRYPOINT表示容器啟動后會執行的命令,這里可以看到,容器啟動后,會執行一個jar包(一個springboot項目)
制作項目的鏡像
制作鏡像
docker build指令需要指明dockerfile的路徑,同時制作鏡像的時候,需要指明鏡像的名稱和tag。
?
讓鏡像跑起來成為容器
docker run
?
docker ps和docker stop?
docker run會運行鏡像生成容器,并返回容器id(非常長的一串id,那么后續的一些對容器的操作中,我們可以提供一部分容器id前綴就可以完成匹配,例如圖中的docker stop操作)
注意docker run指定了2個端口:8083和8080,8083是指宿主機的端口,8080是springboot項目中的啟動端口,也就是說訪問容器的8080端口將通過宿主機的8083端口完成,這就是上一篇文章提及的端口映射技術。
?
進入容器看一看
docker exec
?
訪問部署在容器中的項目
部署訪問成功
?
好了,到這里docker的只是初步就介紹完畢了,相信對docker大家應該有一個感性的認識了,see u next time
?
總結
以上是生活随笔為你收集整理的docker化你的java应用(下)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: docker化你的java应用(上)
- 下一篇: 节省3500万的背后,运维如何兼顾成本与