學習編寫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完成了。