1. 程式人生 > >學習編寫Dockerfile

學習編寫Dockerfile

前言

        我們學習docker的話,其主要目的還是要用來改變我們部署應用程式的傳統習慣,達到解放生產力,解放人力的目的。這篇則自己來熟悉一下dockerfile常用命令。並且嘗試改變下生產環境手動部署應用的方式。

 

常用基礎命令

     FROM 該dockerfile的基礎映象

     RUN 啟動時用來執行命令,通常用來執行應用程式安裝和更新

     CMD docker啟動時,RUN執行前預設呼叫的命令,多條命令的話只會執行最後一條命令。

     COPY 從上下文環境中複製檔案到容器中。

     ADD 更高階的複製功能,提供解壓功能。

     EXPOSE 暴露埠。

 

        

第一個Dockerfile

     好吧,先來個hello world體檢下dockerfile的便捷之處。

   

FROM ubuntu:14.04
MAINTAINER [email protected]
163.com RUN apt-get update CMD echo "hello docker I am garfieldzf"

 接下來就生成映象

 docker build -t myubuntu:v1 

執行無誤後在終端裡會顯示hello docker I am garfieldzf

 

第二個Dockerfile

    這個dockerfile則用來部署一個war包到容器中的tomcat中。在宿主機建立目錄/usr/dockerfile。拷貝apache-tomcat-8.0.53.tar.gz、jdk-8u161-linux-x64.tar.gz  springMVC.war都當前目錄中。

   建立Dockerfile檔案並修改內容 touch Dockerfile  vi Dockerfile

FROM centos:latest
MAINTAINER [email protected]

WORKDIR /usr
RUN mkdir jdk
RUN mkdir tomcat

ADD jdk-8u161-linux-x64.tar.gz /usr/jdk/
ADD apache-tomcat-8.0.53.tar.gz /usr/tomcat/

ENV JAVA_HOME /usr/jdk/jdk1.8.0_161
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 
ENV CATALINA_HOME /usr/tomcat/apache-tomcat-8.0.53 
ENV CATALINA_BASE /usr/tomcat/apache-tomcat-8.0.53 
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

EXPOSE 8080

CMD /usr/tomcat/apache-tomcat-8.0.53/bin/catalina.sh run 

  這裡注意,我從本地下載的tomcat沒有修改埠,一開始EXPOSE寫的 80埠。build 和run後tomcat訪問不了。這才想起來埠不對。

       構建映象。注意後面的小數點,表示構建映象的上下文環境。

       docker build -t garfieldzf/tomcat  . 

 

 構建完成使用docker images會看到剛才構建的檔案

 

  執行映象。 以後來執行的方式來執行。啟動後會返回容器id

  docker run -d -it -p 8080:8080 garfieldzf/tomcat

  先來訪問tomcat。看到tomcat跑起來,則說明容器內容tomcat已啟動

         

   接下來就是把本機的war包部署到容器的tomcat目錄下

   使用docker cp 把war複製到容器裡。複製前先用docker ps檢視容器id

   docker cp springMVC.war [容器id]:/usr/tomcat/apache-tomcat-8.0.53/webapps/

   重啟容器

   docker restart [容器id]

   訪問:http://192.168.80.129:8080/springMVC/

 

 

 完事。 第一個Dockerfile完成了。