一、環境準備
-
首先準備一臺Centos 7的虛擬機并安裝Docker。
docker成功安裝 -
準備好Tomct、JDK的安裝包以及該java項目的War包。
工具準備
二、編寫Dockerfile
Dockerfile是一個由一條條指令組成的文本文件,通過它能快速地構建docker鏡像。
本文的Dockerfile內容如下:
FROM centos
ADD jdk-8u161-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-8.5.29.tar.gz /usr/local/
ENV JAVA_HOME /usr/local/jdk1.8.0_161
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.29
ENV CATALINA_BASE /usr/local/apache-tomcat-8.5.29
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
ADD ./TRMS_HK.war /usr/local/apache-tomcat-8.5.29/webapps
EXPOSE 8080
CMD /usr/local/apache-tomcat-8.5.29/bin/catalina.sh run
解釋:
(1)FROM centos 表示從docker官方倉庫中獲取centos基礎鏡像
(2)ADD jdk-8u161-linux-x64.tar.gz /usr/local/ 將當前目錄下(與Dockerfile同一級目錄)的jdk添加到鏡像的/usr/local/中
(3)ENV JAVA_HOME /usr/local/jdk1.8.0_161 設置Java的環境變量
(4)EXPOSE 8080 對外暴露的端口,便于外部訪問
(5)CMD /usr/local/apache-tomcat-8.5.29/bin/catalina.sh run 容器運行后執行的命令,如果有多條CMD也只有最后一條有效。
三、構建鏡像
命令:docker build -t webapp . (注意最后的 .)
該命令會在當前目錄下尋找Dockerfile文件,并自動完成構建。
-t webapp 表示給構建完成的鏡像取一個名字。
命令:docker images 查看鏡像信息
四、運行容器
命令:docker run -d -p 8090:8080 webapp
-d 表示后臺運行容器,并返回容器ID
-p 使用端口映射,8090:8080表示將容器的8080端口映射到主機的8090端口。
查看運行的所有容器
命令:docker ps -all
可以看到該容器的運行狀態,端口映射等信息,表明容器運行成功。
五、測試部署結果
本地瀏覽器訪問:http://192.168.111.130:8090
六、問題總結:
(1)安裝Docker后,無法pull基礎鏡像,報如下錯誤:
x509 certificate has expired or is not yet valid
時間同步問題,需要下載ntpd,并進行時間同步。
(2)使用docker run 并設置端口映射,無法正常運行,報如下錯誤:
WARNING: IPv4 forwarding is disabled. Networking will not work.
解決辦法:
vi /usr/lib/sysctl.d/00-system.conf
添加:net.ipv4.ip_forward=1
重啟network服務
systemctl restart network
完成以后,刪除錯誤的容器,再次創建新容器,就不再報錯了