實戰:製作 docker 鏡像,可以快速部署 tomcat
1. 準備 tomcat 軟件
cd /data/dockerfile/runtime/
mkdir tomcat
cd tomcat
wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.46/bin/apache-tomcat-8.5.46.tar.gz
2. 準備 Dockerfile
本次直接使用前面製作的鏡像 system/centos:v3 為基礎鏡像來製作,Dockerfile 配置如下:
#Base Image 指定基礎鏡像
FROM system/centos:v3
#Maintainer 鏡像維護者的信息
MAINTAINER lu 13510182959@126.com
#RUN 想讓該鏡像做什麼
RUN yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel -y && yum clean all
#配置 Java 環境變量
ENV JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk
#Tomcat
#ADD 會自動解壓複製到容器裏面的壓縮包
ADD apache-tomcat-8.5.46.tar.gz /usr/local
RUN ln -s /usr/local/apache-tomcat-8.5.46 /usr/local/tomcat
#For Supervisor
ADD tomcat.ini /etc/supervisor.d/tomcat.ini
ENV TOMCAT_HOME /usr/local/tomcat
#Outside port
EXPOSE 22 8080
#CMD 是使用該鏡像啓動的容器要運行的命令
CMD ["/usr/bin/supervisord","-c","/etc/supervisord.conf"]
3. 新建 tomcat.ini
tomcat.ini 的配置如下:
[program:tomcat]
command=/usr/local/tomcat/bin/catalina.sh run
process_name=%(program_name)s
autostart=true
注意:
此時在目錄 /data/dockerfile/runtime/tomcat 下應該有3個文件:
- apache-tomcat-8.5.46.tar.gz
- Dockerfile
- tomcat.ini
4. 製作 tomcat 鏡像
docker build -t runtime/tomcat .
5. 驗證
使用剛剛製造出來的鏡像啓動一個容器
docker run -d --name tomcat-demo -p 8080:8080 -p 8888:22 runtime/tomcat
接下來進行充分的驗證:
確定容器成功運行後,瀏覽器訪問 tomcat 頁面:
http://192.168.100.151:8080
通過 ssh 連接容器:
ssh -p 8888 root@192.168.100.151
在容器內的進程運行,確定 supervisor、sshd、tomcat 均正常且 supervisor 的 PID 是 1:
[root@35672f30384d ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.3 115684 14816 ? Ss 12:48 0:00 /usr/bin/python /usr/bin/supervisord -c /etc/supervisord.conf
root 8 0.0 0.1 112864 4288 ? S 12:48 0:00 /usr/sbin/sshd -D
root 9 1.4 3.9 4535084 151472 ? Sl 12:48 0:06 /usr/lib/jvm/java-1.8.0-openjdk/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/
root 63 0.0 0.1 153152 5988 ? Ss 12:53 0:00 sshd: root@pts/0
root 65 0.0 0.0 15252 1996 pts/0 Ss 12:53 0:00 -bash
root 78 0.0 0.0 55172 1860 pts/0 R+ 12:55 0:00 ps aux
查看 supervisor 狀態可知它管理了兩個進程分別是 sshd 和 tomcat
[root@35672f30384d ~]# supervisorctl status
sshd RUNNING pid 8, uptime 0:09:13
tomcat RUNNING pid 9, uptime 0:09:13