【實踐】Docker for Windows 製作tomcat 映象並上傳至 docker 倉庫

OkidoGreen發表於2020-04-05

準備工序

1、官網下載Docker windows 版
截止到2019年2月2,連結是 https://hub.docker.com/editions/community/docker-ce-desktop-windows,exe檔案,雙擊安裝即可

2、註冊一個docker賬戶
要上傳你自己的docker容器,首先需要有自己的docker賬戶。 
https://hub.docker.com/ ,註冊完後登入,效果如下,感覺和github差不多

3、安裝第一步下載的docker for windows後啟動,會發現多了一個鯨魚的小圖示:

有很多相關的功能,比如登入,檢視倉庫,還有和k8s的配合操作等等 ,switch to Windows container可以在linux和windows環境內進行切換,有一些功能可能只在linux上可以使用。

實踐操作
 

1、啟動 cmd,輸入docker ,可以看到,已經安裝完畢了

2、使用 docker search tomcat 查詢 所有映象中 和tomcat 相關的 ,
選擇stars最高的 執行 docker pull tomcat  拉取tomcat映象到本地

3、此時,使用 docker images 命令可以檢視當前docker內擁有的所有映象,可以看到之前下載的tomcat

4、啟動tomcat,看看能否看到正常安裝的tomcat的啟動頁面,執行命令

docker run -it --name dockerDemo -p 8080:8080 tomcat

這裡我們啟動一個互動式的容器,名字是dockerDemo ,-p 8080:8080表示將容器的8080埠對映到主機的8080埠,這樣我們只要訪問主機的8080埠就可以訪問到容器的服務了。(主機埠:容器埠)

出現熟悉的tomcat命令列啟動介面,此時輸入localhost:8080發現tomcat 已經正常啟動

5、此時啟動一個新的cmd,我們來檢視下 此時docker容器的當前程式與 實際 tomcat所處的目錄結構

docker ps  可以看到當前docker中啟動的所有容器,及對應的容器資訊,此處我們要關注的是containerid 容器ID,之後的操作都需要基於這個關鍵的ID

可以看到我們之前啟動的tomcat 和對應的 容器ID,紅框內顯示了上文說的 主機8080埠對映到容器內的8080。

docker exec -it 20dae1362bc7 /bin/bash 可以進入容器內部,檢視具體容器在機器上的目錄及位置,為之後上傳war包做準備

可以看到,進入目錄後在/usr/local/tomcat ;底層目錄和我們正常安裝的tomcat並無兩樣,再次輸入 exit 可以退出容器

6、接下來就是最關鍵的如何將本地的war包或者專案置入容器內的tomcat中,docker也提供了相關命令

注:war包大家可以自行準備,可以簡單的跑起來的demo即可

docker cp E:\zone\dockerdemo\target\docker-demo.war 20dae1362bc7:/usr/local/tomcat/webapps

簡單介紹一下docker cp 複製命令,docker cp 源地址(本機war包目錄地址) 目標地址(容器ID:容器內部地址)

執行完畢後,可以看到tomcat目錄下 已經有了

此時我們開啟 http://localhost:8080/docker-demo/index.jsp 發現 ,頁面已經可以訪問了

大功告成!

7、至此,簡單的tomcat在docker內的部署流程已經完成了,但是會有一個問題,每次容器重啟後,之前容器內部放置的檔案都會消失,每次重新執行run命令啟動容器,相當於一個新的黑盒,無法保留歷史檔案,所以就引申出了一個新的問題,需要打包成一個images進行持續性管理!

8、在6的基礎上,執行以下命令

首先要提交修改,輸入指令(xxxxx是容器ID,zh69183787/demo,‘/’前面是自己的docker賬號名,後面是給容器取的名字),每次commit後都會生成新的映象,擁有獨立的imageId

docker commit 20dae1362bc7 zh69183787/test 

預設生成的映象tag是latest,之後是none,如果想使用自己的tag的話,可以在 zh69183787/test:v2,加上tag

此時,輸入 docker images 就會發現,已經生成了一個新的映象images,tag就是commit時選填項,v2

之後就可以基於這個映象進行檔案的管理了。

9、最後還可以通過docker hub  將自己的映象傳入遠端docker 倉庫中,和github類似的一套機制

docker login  登入 docker 賬戶,我這邊由於docker 鯨魚小圖示啟動後自己進行了登入,所以就直接生效了

將倉庫上傳至映象 docker push zh69183787/test:latest (latest是標籤,docker images後TAG一欄就是了)

最後看一眼 docker hub

如果之前commit了不同映象並且有不同的tag,點選某一個images後會發現tag下有N個提交版本

 

有了 ok,之後可以通過 docker pull zh69183787/test,拉取遠端倉庫的 images 了,感覺 commit 和 tag版本 都和git異曲同工,可以自行了解一下細節

參考:

新手超詳細記錄:Docker for Windows打包製作tomcat映象並部署java web專案

Docker的Windows容器初體驗

在Docker中利用Tomcat快速部署web應用的方法示例

相關文章