最近項目中有使用docker,組內做了關於docker的培訓,然后自己跟着研究了一下,大概了解如何使用。我是基於tomcat鏡像制作(不需要安裝jdk,配置環境變量),基於centos鏡像制作需要安裝jdk,配置環境變量,下面會詳細寫到。前提准備:在centos機器上安裝好docker。
一、基於tomcat鏡像
1. 搜索並tomcat鏡像
docker search tomcat
2. 第一個的 stars最多,而且是官方的,就是你了~
下載鏡像:
docke pull tomcat
查看本地鏡像:
docker images
3. 制作Dockfile文件
(1)touch Dockerfile (沒有Dockerfile 文件的話會自動創建一個)
(2)vim Dockerfile
# Base image to use, this nust be set as the first line(form會先從本地鏡像查找,如果沒有回去docker倉庫下載) FROM tomcat # Maintainer: docker_user <docker_user at email.com> (@docker_user) MAINTAINER xtt #拷貝配置文件和項目war包 COPY xtt_only/usr/local/xinsight /usr/local/xinsight ADD xtt_only/etl.war /usr/local/tomcat/webapps #配置端口號 EXPOSE 8080 # Commands when creating a new container ENTRYPOINT ["/usr/local/tomcat/bin/catalina.sh", "run"]
(3)編譯Dockerfile文件
docker build -t xtt:v1 .
備注:
1) -t xtt:v1 指定鏡像名稱為xtt ,tag為v1
2) 最后的一點(.)表示當前目錄下的Dockerfile文件,會自動識別到當前路徑下的Dockerfile文件
4. 運行此鏡像,啟動容器看是否成功
- 查看本地鏡像:
docker images
- 運行此鏡像:
docker run ee4
容器運行成功~
- 檢查一下,查看當前正在運行的容器:
docker ps
二、基於centos鏡像
需要下載jdk和tomcat安裝包,並且在Dockerfile里面配置環境變量,其它保持不變。
1. 將jdk和tomcat安裝包拷貝到虛擬機上
2. 修改Dockerfile文件
FROM docker.io/centos
MAINTAINER xtt
#切換鏡像目錄(類似cd命令),進入/usr目錄
WORKDIR /usr
#在/usr/下創建jdk目錄,用來存放jdk文件
RUN mkdir jdk1.8.162
#將宿主機的jdk目錄下的文件拷至鏡像的/usr/jdk目錄下
ADD jdk1.8.0_162 /usr/jdk1.8.162/
#將宿主機的tomcat目錄下的文件拷至鏡像的/usr/tomcat目錄下,將etl的war拷貝到webapps目錄下
RUN mkdir tomcat8.5.32
COPY tomcat8.5.32 /usr/tomcat8.5.32/
ADD xtt_only/etl.war /usr/local/tomcat/webapps
#拷貝項目環境配置文件
COPY xtt_only/usr/local/xinsight /usr/local/xinsight
#設置環境變量 ENV JAVA_HOME=/usr/jdk1.8.162 ENV JRE_HOME=$JAVA_HOME/jre ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH ENV PATH=/sbin:$JAVA_HOME/bin:$PATH #公開端口 EXPOSE 8080 #設置啟動命令 ENTRYPOINT ["/usr/tomcat8.5.32/bin/catalina.sh","run"]
備注:
1) FROM 表示基於哪個基礎鏡像制作鏡像,這里是基於ubuntu的最新鏡像
2) MAINTAINER 表示由哪個人維護這個鏡像
3) ADD 、COPY表示將宿主機上的文件復制到鏡像的指定目錄,ADD比COPY多一個特性:如果是壓縮包拷貝過去會自動解壓(源路徑一定要是Dockerfile的相對路徑)
4) ENV 表示指定環境變量
5) RUN 運行指定的命令,格式:RUN+ linux命令(RUN mkdir 創建目錄)
6) EXPOSE 8080 指定暴露8080端口
7) ENTRYPOINT 進入點,后面跟的是需要執行的腳本