Docker實戰:使用Dockerfile建立帶tomcat服務並支援ssh的Centos Docker映象
阿新 • • 發佈:2018-12-26
1、在root目錄下建立 tomcat8_jdk8 目錄
2、下載jdk8,tomcat8並解壓到 tomcat8_jdk8 目錄下
將jdk8解壓後重命名為jdk,並將裡面的src原始碼相關的檔案刪除,以減少生產映象檔案的大小。
將tomcat8解壓後重命名為tomcat,也可將裡面不需要的檔案刪除。
可用下面的命令處理:
rm -rf ./jdk/*src.zip \
./jdk/lib/missioncontrol \
./jdk/lib/visualvm \
./jdk/lib/*javafx* \
./jdk/jre/lib/plugin.jar \
./jdk/jre/lib/ext/jfxrt.jar \
./jdk/jre/bin/javaws \
./jdk/jre/lib/javaws.jar \
./jdk/jre/lib/desktop \
./jdk/jre/plugin \
./jdk/jre/lib/deploy* \
./jdk/jre/lib/*javafx* \
./jdk/jre/lib/*jfx* \
./jdk/jre/lib/amd64/libdecora_sse.so \
./jdk/jre/lib/amd64/libprism_*.so \
./jdk/jre/lib/amd64/libfxplugins.so \
./jdk/jre/lib/amd64/libglass.so \
./jdk/jre/lib/amd64/libgstreamer-lite.so \
./jdk/jre/lib/amd64/libjavafx*.so \
./jdk/jre/lib/amd64/libjfx*.so
3、在 tomcat8_jdk8 目錄下建立run.sh檔案,內容如下
#!/bin/bash
/usr/sbin/sshd &
exec ${CATALINA_HOME}/bin/catalina.sh run
4、在 tomcat8_jdk8 目錄下建立Dockerfile檔案,內容如下:
#建立tomcat目錄
RUN mkdir -p /java/tomcat
#把當前目錄下的tomcat資料夾新增到映象
ADD tomcat /java/tomcat
#設定環境變數,所有操作都是非互動式的
#ENV DEBINA_FRONTEND noninteractive
#更改系統時區設定
#RUN echo "Asia/Shanghai">/etc/timezone && dpkg-reconfigure -f noninteractive tzdata
#新增環境變數
ENV JAVA_HOME /java/jdk
ENV CATALINA_HOME /java/tomcat
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin
#暴露8080,22埠
EXPOSE 8080
EXPOSE 22
ADD run.sh /java/run.sh
RUN chmod 755 /java/run.sh
RUN chmod +x /java/tomcat/bin/*.sh
#啟動時執行tomcat
#CMD ["/java/tomcat/bin/catalina.sh","run"]
CMD ["/java/run.sh"]
完成後 tomcat8_jdk8 目錄內容如下所示:
5、編譯生成映象檔案 docker build -t tomcat8_jdk8:centos . 6、檢視生成的映象檔案 docker images 7、使用映象生成容器 docker run -d -p 2225:22 -p 8002:8080 -p 4444:443 tomcat8_jdk8:centos /java/run.sh 說明: 把容器的22埠對映到宿主機的2225埠,把容器的8080埠對映到宿主機的8002埠, 把容器的4444埠對映到宿主機的443埠。 8、Tomcat訪問測試 在其它機器上通過宿主機的IP訪問Tomcat (192.168.121.129是VirtualBox中Centos虛擬機器的ip,虛擬機器使用橋接模式,IP使用ifconfig列出的ens33)
9、ssh測試 ssh [email protected] -p 2225 [[email protected] tomcat8_jdk8]# ssh [email protected] -p 2225 The authenticity of host '[localhost]:2225 ([::1]:2225)' can't be established. ED25519 key fingerprint is SHA256:bpea3b9d0VJwvZeL4MI1jJMs1iF1K+sTVsNtPt4sQU8. ED25519 key fingerprint is MD5:78:9b:a4:df:06:a9:b1:98:2d:33:9c:77:b5:5d:0e:b1. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '[localhost]:2225' (ED25519) to the list of known hosts. [email protected]'s password:
[[email protected] ~]$
ssh測試成功
5、編譯生成映象檔案 docker build -t tomcat8_jdk8:centos . 6、檢視生成的映象檔案 docker images 7、使用映象生成容器 docker run -d -p 2225:22 -p 8002:8080 -p 4444:443 tomcat8_jdk8:centos /java/run.sh 說明: 把容器的22埠對映到宿主機的2225埠,把容器的8080埠對映到宿主機的8002埠, 把容器的4444埠對映到宿主機的443埠。 8、Tomcat訪問測試 在其它機器上通過宿主機的IP訪問Tomcat (192.168.121.129是VirtualBox中Centos虛擬機器的ip,虛擬機器使用橋接模式,IP使用ifconfig列出的ens33)
9、ssh測試 ssh [email protected] -p 2225 [[email protected] tomcat8_jdk8]# ssh [email protected] -p 2225 The authenticity of host '[localhost]:2225 ([::1]:2225)' can't be established. ED25519 key fingerprint is SHA256:bpea3b9d0VJwvZeL4MI1jJMs1iF1K+sTVsNtPt4sQU8. ED25519 key fingerprint is MD5:78:9b:a4:df:06:a9:b1:98:2d:33:9c:77:b5:5d:0e:b1. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '[localhost]:2225' (ED25519) to the list of known hosts.