我們都知道Docker構建一個鏡像有兩種方式:
使用`docker commit`命令 使用`Dockerfile`文件和`docker build`命令
那么這兩種方式有何區別呢?
相同點:底層實現上一樣,最終都是通過`docker commit`生成鏡像; 不同點:通過`Dockerfile`生成鏡像,能夠實現鏡像文檔化,使得鏡像可讀且易維護; 通過`docker build`生成鏡像則相反,不能實現鏡像文檔化。
所以這篇文章采用Dockerfile來構建 :D
0x02准備工作
創建目錄
$ mkdir tomcat && cd tomcat # 創建一個目錄來存放所需文件
$ touch Dockerfile && vi Dockerfile # 編寫Dockefile
Dockerfile (Tomcat其他版本)
FROM tomcat:7-jre7 # tomcat7 + jre 7 MAINTAINER "errorlife <steffan.fan@foxmail.com>" # 維護者 CMD ["catalina.sh", "run"] #啟動tomcat shell執行程序
0x03 構建鏡像
構建鏡像
$ sudo docker build -t errorlife/tomcat . # "-t",--tag,為當前鏡像命名:errorlife/tomcat # ".", 指代當前目錄
運行鏡像
$ sudo docker run -d -p 8080:8080 errorlife/tomcat # -d,--detach=false 指定容器運行於前台還是后台(-d即后台) # "-p",--port,指定宿主機的8080端口綁定到鏡像暴露的8080端口
運行結果
-
你可以使用
curl
命令確定是否正確部署成功$ curl http://docker.steffan.cn:8080/
-
使用瀏覽器訪問http://ip:8080/
當你見到熟悉的湯姆貓的時候,就證明你構建成功了。
部署war包
- 將war包上傳到與
Dockerfile
文件同一目錄(即tomcat)
我使用的是WinSCP,個人覺得好用到不行=。= -
重新編寫Dockerfile:
$ vi Dockerfile
-
Dockerfile:
FROM tomcat:7-jre7 MAINTAINER "errorlife <steffan.fan@foxmail.com>" ADD dockertest.war /usr/local/tomcat/webapps/ #將war包添加進webapps中 CMD ["catalina.sh", "run"] #啟動tomcat shell執行程序
0x04 其他配置文件
應用場景
由於一些項目需要修改tomcat的context.xml
,setting.xml
,tomcat-user.xml
等,還有一些tomcat的lib包
,甚至是添加一些獨有的授權文件
,那么也應該在dockerfile
中add
進去,而不是直接放到Linux
的文件管理系統中。
Show一下我的Dockerfile
FROM tomcat:7-jre7 MAINTAINER "errorlife <steffan.fan@foxmail.com>" ADD settings.xml /usr/local/tomcat/conf/ ADD tomcat-users.xml /usr/local/tomcat/conf/ ADD config/license.xml ADD classes12.jar /usr/local/tomcat/lib ADD ojdbc6.jar /usr/local/tomcat/lib ADD oracle-jdbc-10.2.jar /usr/local/tomcat/lib ADD context.xml /usr/local/tomcat/conf/ ADD xxx.war /usr/local/tomcat/webapps/ CMD ["catalina.sh", "run"]