Docker Java 映象基礎(四)
阿新 • • 發佈:2020-07-29
基於官方提供的centos 7.2.1511 基礎映象構建JDK 和tomcat 映象,先構建JDK映象,然後在基於JDK映象構建tomcat映象
構建 centos:latest 基礎映象:
# 下載基礎映象JDK: docker pull centos # 執行構建JDK映象: mkdir -pv /opt/dockerfile/{web/{nginx,tomcat,jdk.apache},system/{centos,ubuntu,redhat}} # 清除<none> 型別的映象: 1 )確認: docker images | grep "<none>" | awk '{print $3}' 2 )刪除: docker rmi `docker images | grep "<none>" | awk '{print $3}'` # 打一個基礎映象: docker tag centos:latest centos:7.6.1810 # 編寫Dockerfile: vim dockerfile from centos:7.6.1810 RUN yum install epel-release -y && yum install vim iotop bc gcc gcc-c++ glibc glibc-devel pcre \ pcre-devel openssl openssl-devel zip unzip zlib-devel netols \ lrzsz tree ntpdate telnet lsof tcpdump wget libevent libevent-devel \ bc systemd-devel bash-completion traceroute -y RUN useradd nginx -u 2019 && useradd tomcat -u 2020 RUN rm -rf /etc/localtime && ln -sv /usr/share/javazi/Asia/Shanghai /etc/localtime # 構建一個基礎映象: docker build -t centos-base:v1 . # 檢視一個映象有幾層: docker images history 映象ID
構建Jdk-Base 基礎版本:
# 建立JDK版本images: vim Dockerfile # For JDK Base FROM centos-base:v1 # 這個根據自己的映象來決定 MAINTAINER [email protected] ADD jdk-8u192-linux-x64.tar.gz /usr/local/src RUN ln -sv /usr/local/src/jdk1.8.0_192 /usr/local/jdk ADD profile /etc/profile ENV JAVA_HOME /usr/local/jdk ENV JRE_HOME $JAVA_HOME/jre ENV CLASSPATH $JAVA_HOME/lib/:$JRE_HOME/LIB/ ENV PATH $PATH:$JAVA_HOME/bin # 構建JDK映象: vim docker_build.sh docker build -t jdk-base:1.8.0.192 .
構建tomcat-base 映象:
# 建立tomcat-base映象 cd /opt/dockerfile/web/tomcat wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.39/bin/apache-tomcat-8.5.39.tar.gz # 建立dockfile檔案: vim Dockerfile FROM jdk-base:1.8.0.192 MAINTAINER [email protected] RUN test -d /data/soft || mkdir -p /data/soft RUN test -d /data/www || mkdir -p /data/www ADD apache-tomcat-8.5.39.tar.gz /data/soft RUN ln -svf /data/soft/apache-tomcat-8.5.39 /data/soft/tomcat RUN chown -R tomcat.tomcat /data/soft/tomcat /data/soft/apache-tomcat-8.5.39 /data/www/ # 構建JDK映象: vim docker_build.sh docker build -t tomcat-base:8.5.39 . # 根據映象建立容器: docker run -ti --rm tomcat-base:8.5.39 bash
構建tomcat-app1 映象:
# 建立tomcat-app1 映象:
FROM centos-base:v1
ADD jdk-8u192-linux-x64.tar.gz /usr/local/src
RUN ln -sv /usr/local/src/jdk1.8.0_192 /usr/local/jdk
ENV JAVA_HOME /usr/local/jdk
ENV JRE_HOME $JAVA_HOME/jre/
ENV CLASSPATH $JAVA_HOME/lib/:$JRE_HOME/LIB/
ENV PATH $PATH:$JAVA_HOME/bin
ADD profile /etc/profile
RUN rm -rf /etc/localtime && ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone
###################################################################
# 執行指令碼 docker_build.sh,構建映象:
#!/bin/bash
docker build -t jdk-base:1.8.0.192 .
###################################################################
# 測試構建的映象是否可以正常執行:
[root@node-2 tomcat-app1]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat-app1 v1 642ebdce8a40 About a minute ago 964MB
tomcat-base 8.5.39 507bbd514fc5 2 minutes ago 950MB
## 前臺互動的方式測試一下映象:
[root@node-2 tomcat-app1]# docker run -ti --rm -p 8080:8080 tomcat-app1:v1
10.10.5.136 hostname is start
Using CATALINA_BASE: /data/soft/tomcat
Using CATALINA_HOME: /data/soft/tomcat
Using CATALINA_TMPDIR: /data/soft/tomcat/temp
Using JRE_HOME: /usr/local/jdk/jre
Using CLASSPATH: /data/soft/tomcat/bin/bootstrap.jar:/data/soft/tomcat/bin/tomcat-juli.jar
Tomcat started.
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2 8ef11a979732
## 驗證是否正常執行:
[root@node-2 tomcat-app1]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
41bc8227215b tomcat-app1:v1 "/data/soft/tomcat/b…" 2 minutes ago Up 2 minutes 0.0.0.0:8080->8080/tcp, 8443/tcp funny_lalande
## 訪問一下頁面:
[root@node-2 tomcat-app1]# curl -I 127.0.0.1:8080/app1
HTTP/1.1 302
Location: /app1/
Transfer-Encoding: chunked
Date: Mon, 20 Jul 2020 10:59:33 GMT
http://IP:8080/app1
快速構建 tomcat-app2
cd /opt/dockerfile/web/tomcat
cp -r tomcat-app1 tomcat-app2
# 修改檔案內容:
1 code.tar.gz 內容要最新的
2
vim docker_build.sh
docker build -t tomcat-app2:v1 .
3 修改dockerfile:
vim Dockerfile
FROM tomcat-base:8.5.39
maintainer 57674891@qqcom
RUN test -d /data/www/webapps/app2 || mkdir -p /data/www/webapps/app2
ADD code.tar.gz /data/www/webapps/app2
ADD server.xml /data/soft/tomcat/conf
ADD run_tomcat.sh /data/soft/tomcat/bin/
RUN chown -R tomcat.tomcat /data/soft/* /data/www/webapps/app2
EXPOSE 8080 8443
CMD ["/data/soft/tomcat/bin/run_tomcat.sh"]
4 打包檔案:
tar -zcvf code.tar.gz index.html
5 構建docker映象:
sh docker_build.sh
6 測試映象:
docker run -ti -p 8080:8080 --rm 映象ID bash
7 訪問頁面:
http://10.10.5.136:8080/app2/index.html
# 以上重新就構建出來了一套新的業務應用
提示- 境變數很重要:
# 1 ) Dockerfile 裡面的環境變數很重要,一定要在tomcat-base 基礎的映象完成之後 測試一下 映象是否可以正常執行:
ENV JAVA_HOME /usr/local/jdk
ENV JRE_HOME $JAVA_HOME/jre/
ENV CLASSPATH $JAVA_HOME/lib/:$JRE_HOME/LIB/
ENV PATH $PATH:$JAVA_HOME/bin
ADD profile /etc/profile
# 2 ) JDK-base 打映象的就要 一起設定 2種變數 /etc/profile 和 Dockerfile 裡面的 ENV 變數
......
vim profile
export JAVA_HOME=/usr/local/jdk
export JRE_HOME=/usr/local/jdk/jre
export TOMCAT_HOME=/data/soft/tomcat
export PATH=$JAVA_HOME/bin/:$JAVA_HOME/jre/bin:$TOMCAT_HOME/bin:$PATH
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar