使用Dockerfile制作tomcat镜像

我们使用apache-tomcat-8.0.50.tar.gz和jdk-8u172-linux-x64.tar.gz来创建一个名字为tomcat8.0.50-jdk8的镜像

我们在服务器中创建一个文件夹,dockfile,然后将apache-tomcat-8.0.50.tar.gz和jdk-8u172-linux-x64.tar.gz放到该文件夹中,并编写Dockfile文件和tomcat.sh脚本管理tomcat的启动、关闭、重启

-rw-r--r-- 1 root root   9417189 Sep 19 15:12 apache-tomcat-8.0.50.tar.gz
-rw-r--r-- 1 root root       644 Sep 19 15:56 Dockerfile
-rw-r--r-- 1 root root 190921804 Sep 19 15:21 jdk-8u172-linux-x64.tar.gz
-rw-r--r-- 1 root root       308 Sep 19 15:53 tomcat.sh

一、编写Dockerfile

#基础镜像
FROM ubuntu

##设置维护者信息
MAINTAINER prince "yaoshengting7@163.com"

##安装jdk
COPY jdk-8u172-linux-x64.tar.gz /tmp/jdk-8u172-linux-x64.tar.gz
RUN cd /tmp && tar xf jdk-8u172-linux-x64.tar.gz -C /usr/local/ && rm -rf /tmp/jdk-8u172-linux-x64.tar.gz

##设置环境
ENV JAVA_HOME /usr/local/jdk1.8.0_172
ENV PATH $PATH:/$JAVA_HOME/bin
#ENV TZ=Asia/Shanghai

##检索软件包的新列表 安装curl
RUN apt-get update && apt-get install -y curl

##安装 tomcat
COPY apache-tomcat-8.0.50.tar.gz /tmp/apache-tomcat-8.0.50.tar.gz
RUN cd /tmp && tar xf apache-tomcat-8.0.50.tar.gz && mv apache-tomcat-8.0.50 /usr/local/apache-tomcat-8.0.50 && rm -rf /tmp/apache-tomcat-8.0.50.tar.gz

##添加tomcat脚本
ADD tomcat.sh /usr/local/
RUN chmod 755 /usr/local/tomcat.sh

#设置时区
#这个设置时区的方式已经不能使用了
#RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
##现在使用ls来设置
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone

##Expose ports
EXPOSE 8080

##配置容器启动后执行的命令
ENTRYPOINT /usr/local/tomcat.sh start && tail -f /usr/local/apache-tomcat-8.0.50/logs/catalina.out
#CMD ["/usr/local/tomcat.sh","start"]

编写tomcat的启动、关闭、重启管理脚本

#!/bin/bash
export JAVA_HOME=/usr/local/jdk1.8.0_172
export TOMCAT_HOME=/usr/local/apache-tomcat-8.0.50
  
case $1 in  
start)  
  sh $TOMCAT_HOME/bin/startup.sh  
;;  
stop)  
  sh $TOMCAT_HOME/bin/shutdown.sh  
;;  
restart)  
  sh $TOMCAT_HOME/bin/shutdown.sh  
  sh $TOMCAT_HOME/bin/startup.sh  
;;  
esac  
exit 0

二、创建镜像

进入到Dockerfile所在的目录,执行docker build -t yaoshengting/tomcat8.0.50-jdk8:v1.0 . 来创建镜像

注意:命令的最后有个小点点,不能忽略了,代表dockfile在当前目录下。

[root@iZbp13pwlxqwiu1xxb6szsZ dockerfile]# docker build -t yaoshengting/tomcat8.0.50-jdk8:v1.0 .
Sending build context to Docker daemon  200.3MB
Step 1/10 : FROM centos
 ---> 67fa590cfc1c
Step 2/10 : MAINTAINER prince "yaoshengting7@163.com"
 ---> Running in 1cb32b20cd74
Removing intermediate container 1cb32b20cd74
 ---> 4a4068197aca
Step 3/10 : COPY jdk-8u172-linux-x64.tar.gz /tmp/jdk-8u172-linux-x64.tar.gz
 ---> 30b023ed3432
Step 4/10 : RUN cd /tmp && tar xf jdk-8u172-linux-x64.tar.gz -C /usr/local/ && rm -rf /tmp/jdk-8u172-linux-x64.tar.gz
 ---> Running in 9b2d826da0bb
Removing intermediate container 9b2d826da0bb
 ---> 049a9bc455dc
Step 5/10 : ENV JAVA_HOME /usr/local/jdk1.8.0_172
 ---> Running in baae5a0afbb9
Removing intermediate container baae5a0afbb9
 ---> c2a0f5420a18
Step 6/10 : ENV PATH $PATH:/$JAVA_HOME/bin
 ---> Running in 15de44e33f84
Removing intermediate container 15de44e33f84
 ---> 309d484eaa8a
Step 7/10 : COPY apache-tomcat-8.0.50.tar.gz /tmp/apache-tomcat-8.0.50.tar.gz
 ---> 381683a8db6f
Step 8/10 : RUN cd /tmp && tar xf apache-tomcat-8.0.50.tar.gz && mv apache-tomcat-8.0.50 /usr/local/ && rm -rf /tmp/apache-tomcat-8.0.50.tar.gz
 ---> Running in 1e91d4f757cb
Removing intermediate container 1e91d4f757cb
 ---> 5540a77ae710
Step 9/10 : EXPOSE 8080
 ---> Running in 42b94dbc020c
Removing intermediate container 42b94dbc020c
 ---> d8fc7815f157
Step 10/10 : ENTRYPOINT tomcat.sh start && tail -f /usr/local/apache-tomcat-8.0.50/logs/catalina.out
 ---> Running in 7cc77372cd8e
Removing intermediate container 7cc77372cd8e
 ---> 5f8c840d290b
Successfully built 5f8c840d290b
Successfully tagged yaoshengting/tomcat8.0.50-jdk8:v1.0

上面是执行创建镜像的命令后打出的信息,我们看到镜像已经创建成功,镜像id为5f8c840d290b

我们执行docker images查看本服务器上的镜像,出现了刚才创建成功的镜像

[root@iZbp13pwlxqwiu1xxb6szsZ dockerfile]# docker images
REPOSITORY                       TAG                 IMAGE ID            CREATED             SIZE
yaoshengting/tomcat8.0.50-jdk8   v1.0                5f8c840d290b        29 seconds ago      803MB
tomcat                           latest              365b0a528e2e        5 days ago          506MB
centos                           latest              67fa590cfc1c        4 weeks ago         202MB
[root@iZbp13pwlxqwiu1xxb6szsZ dockerfile]# 

三、根据镜像创建容器并运行

执行  docker run -it -p:8889:8080 5f8c

看到容器启动成功后,我们通过8889端口访问服务器(要保证8889端口可以访问),如下图,表明制作的tomcat镜像成功的运行了。

这里略过docker命令的讲解。

四、将镜像推送到DockerHub上

首先需要有一个DockerHub的帐号,我申请了一个Public的repo,免费的,和GitHub类似,public的免费,private的要钱。网址为https://hub.docker.com/

[root@iZbp13pwlxqwiu1xxb6szsZ dockerfile]# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: yaoshengting
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
[root@iZbp13pwlxqwiu1xxb6szsZ dockerfile]# 

执行docker push yaoshengting/tomcat8.0.50-jdk8:v1.0 ,将镜像推送到DockerHub上

yaoshengting表示DockerHub上的用户名,tomcat8.0.50-jdk8是repo的名字,v1.0表示tag号

若在创建docker image的时候,-t选项不是yaoshengting/tomcat8.0.50-jdk8:v1.0,而是tomcat8.0.50-jdk8:v1.0,那么即使用yaoshengting用户名登录了DockerHub,最后也无法push的;因此在创建镜像的时候,一定要在前面加上你在DockerHub上的用户名,如yaoshengting

执行后,开始进行推送,下面表示推送中

The push refers to repository [docker.io/yaoshengting/tomcat8.0.50-jdk8]
39429097b3c0: Pushing [===========>                                       ]  3.112MB/13.57MB
38eb26903728: Pushing [=============>                                     ]  2.557MB/9.417MB
985538b9b8d7: Pushing [>                                                  ]  4.368MB/387.4MB
8d44bbdc55be: Pushing [>                                                  ]  2.754MB/190.9MB
877b494a9f30: Pushing [=>                                                 ]  5.945MB/201.9MB

推送成功

[root@iZbp13pwlxqwiu1xxb6szsZ dockerfile]# docker push yaoshengting/tomcat8.0.50-jdk8:v1.0
The push refers to repository [docker.io/yaoshengting/tomcat8.0.50-jdk8]
39429097b3c0: Pushed 
38eb26903728: Pushed 
985538b9b8d7: Pushed 
8d44bbdc55be: Pushed 
877b494a9f30: Pushed 
v1.0: digest: sha256:24fab6be1a840736dff1a4ad702381a746dd5be1ddbbd4702e45a1322d6fe4b6 size: 1377
[root@iZbp13pwlxqwiu1xxb6szsZ dockerfile]# 

登录到我们的 DockerHub上,在仓库中就可以找到这个镜像

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值