首页 > 技术文章 > 自定义tomcat镜像上传至DockerHub

Lance1123 2021-07-13 11:24 原文

一)制作属于自己的tomcat镜像

  • 1.准备镜像文件tomcat压缩包、jdk压缩包

  • 2.编写dockerfile文件、官方命名Dockerfile、以官方命名时不需要-f指定、build时会自动寻找这个文件

创建个reademe.txt用来对Dockerfile做解释说明
[root@xiaozhang1999 tomcatfile]# touch readme.txt
创建镜像 ADD会自动解压包

FROM centos
MAINTAINER ztsq<467605642@qq.com>

COPY readme.txt /usr/local/readme.txt

ADD apache-tomcat-8.5.64.tar.gz /usr/local
ADD jdk-8u281-linux-x64.tar.gz /usr/local

RUN yum -y install vim

ENV MYPATH /usr/local

WORKDIR $MYPATH

ENV JAVA_HOME /usr/local/jdk1.8.0_281
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tool.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.64
ENV CATALINA_BASH /usr/local/apache-tomcat-8.5.64
ENV PATH $PATH:$JAVA_HOME/bin;$CATALINA_HOME/lib;$CATALINA_HOME/bin

EXPOSE 8080

CMD /usr/local/apache-tomcat-8.5.64/bin/startup.sh && tail -F /usr/local/apache-tomcat-8.5.64/bin/logs/catalina.out
  • 3.构建镜像

docker build -t diytomcat

  • 4.启动tomcat镜像 设置test挂载目录和日志tomcatlogs目录

docker run -d -p9090:8080 --name ztsqtomcat -v /root/tomcatfile/diytomcatcontainer/test:/usr/local/apache-tomcat-8.5.64/webapps/test -v/root/tomcatfile/diytomcatcontainer/tomcatlogs/:/usr/local/apache-tomcat-8.5.64/logs diytomcat

  • 5.进入tomcat、该容器下有tomcat和jdk。配置成功。且访问curl localhost:9090.

docker exec -it 504599f541e8ff21f571684 /bin/bash

  • 6.在浏览器上访问

7.发布项目(由于做了卷挂载、我们直接在本地上编写项目就可以进行发布了)。在test挂载目录上操作。
在test下新建WEB-INF文件夹、webinf下新建web.xml

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
 	version="2.5">
</web-app>

[root@xiaozhang1999 tomcatfile]# touch readme.txt
[root@xiaozhang1999 tomcatfile]# ll
total 150636
-rw-r--r-- 1 root root  10520844 Mar 29 11:28 apache-tomcat-8.5.64.tar.gz
-rw-r--r-- 1 root root       632 Jun 29 18:03 Dockerfile
-rw-r--r-- 1 root root 143722924 Mar 30 09:51 jdk-8u281-linux-x64.tar.gz
-rw-r--r-- 1 root root         0 Jun 30 09:18 readme.txt
[root@xiaozhang1999 tomcatfile]# cat Dockerfile
FROM centos
MAINTAINER ztsq<467605642@qq.com>

COPY readme.txt /usr/local/readme.txt

ADD apache-tomcat-8.5.64.tar.gz /usr/local
ADD jdk-8u281-linux-x64.tar.gz /usr/local

RUN yum -y install vim

ENV MYPATH /usr/local

WORKDIR $MYPATH

ENV JAVA_HOME /usr/local/jdk1.8.0_281
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tool.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.64
ENV CATALINA_BASH /usr/local/apache-tomcat-8.5.64
ENV PATH $PATH:$JAVA_HOME/bin;$CATALINA_HOME/lib;$CATALINA_HOME/bin

EXPOSE 8080

CMD /usr/local/apache-tomcat-8.5.64/bin/startup.sh && tail -F /usr/local/apache-tomcat-8.5.64/bin/logs/catalina.out
[root@xiaozhang1999 tomcatfile]# docker build -t diytomcat .
Sending build context to Docker daemon  154.2MB
Step 1/15 : FROM centos
 ---> 300e315adb2f
Step 2/15 : MAINTAINER ztsq<467605642@qq.com>
 ---> Using cache
 ---> f11b3a959525
Step 3/15 : COPY readme.txt /usr/local/readme.txt
 ---> 3cb3f4ce6b31
Step 4/15 : ADD apache-tomcat-8.5.64.tar.gz /usr/local
 ---> f72e355127a5
Step 5/15 : ADD jdk-8u281-linux-x64.tar.gz /usr/local
 ---> 11de21d41cac
Step 6/15 : RUN yum -y install vim
 ---> Running in df98ca8004f9
CentOS Linux 8 - AppStream                      2.1 MB/s | 7.5 MB     00:03    
CentOS Linux 8 - BaseOS                         996 kB/s | 2.6 MB     00:02    
CentOS Linux 8 - Extras                          20 kB/s | 9.6 kB     00:00    
Dependencies resolved.
================================================================================
 Package             Arch        Version                   Repository      Size
================================================================================
Installing:
 vim-enhanced        x86_64      2:8.0.1763-15.el8         appstream      1.4 M
Installing dependencies:
 gpm-libs            x86_64      1.20.7-17.el8             appstream       39 k
 vim-common          x86_64      2:8.0.1763-15.el8         appstream      6.3 M
 vim-filesystem      noarch      2:8.0.1763-15.el8         appstream       48 k
 which               x86_64      2.21-12.el8               baseos          49 k

Transaction Summary
================================================================================
Install  5 Packages

Total download size: 7.8 M
Installed size: 30 M
Downloading Packages:
(1/5): gpm-libs-1.20.7-17.el8.x86_64.rpm        108 kB/s |  39 kB     00:00    
(2/5): vim-filesystem-8.0.1763-15.el8.noarch.rp 711 kB/s |  48 kB     00:00    
(3/5): which-2.21-12.el8.x86_64.rpm             723 kB/s |  49 kB     00:00    
(4/5): vim-enhanced-8.0.1763-15.el8.x86_64.rpm  1.9 MB/s | 1.4 MB     00:00    
(5/5): vim-common-8.0.1763-15.el8.x86_64.rpm    3.1 MB/s | 6.3 MB     00:02    
--------------------------------------------------------------------------------
Total                                           2.7 MB/s | 7.8 MB     00:02     
warning: /var/cache/dnf/appstream-02e86d1c976ab532/packages/gpm-libs-1.20.7-17.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 8483c65d: NOKEY
CentOS Linux 8 - AppStream                      1.6 MB/s | 1.6 kB     00:00    
Importing GPG key 0x8483C65D:
 Userid     : "CentOS (CentOS Official Signing Key) <security@centos.org>"
 Fingerprint: 99DB 70FA E1D7 CE22 7FB6 4882 05B5 55B3 8483 C65D
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1 
  Installing       : which-2.21-12.el8.x86_64                               1/5 
  Installing       : vim-filesystem-2:8.0.1763-15.el8.noarch                2/5 
  Installing       : vim-common-2:8.0.1763-15.el8.x86_64                    3/5 
  Installing       : gpm-libs-1.20.7-17.el8.x86_64                          4/5 
  Running scriptlet: gpm-libs-1.20.7-17.el8.x86_64                          4/5 
  Installing       : vim-enhanced-2:8.0.1763-15.el8.x86_64                  5/5 
  Running scriptlet: vim-enhanced-2:8.0.1763-15.el8.x86_64                  5/5 
  Running scriptlet: vim-common-2:8.0.1763-15.el8.x86_64                    5/5 
  Verifying        : gpm-libs-1.20.7-17.el8.x86_64                          1/5 
  Verifying        : vim-common-2:8.0.1763-15.el8.x86_64                    2/5 
  Verifying        : vim-enhanced-2:8.0.1763-15.el8.x86_64                  3/5 
  Verifying        : vim-filesystem-2:8.0.1763-15.el8.noarch                4/5 
  Verifying        : which-2.21-12.el8.x86_64                               5/5 

Installed:
  gpm-libs-1.20.7-17.el8.x86_64         vim-common-2:8.0.1763-15.el8.x86_64    
  vim-enhanced-2:8.0.1763-15.el8.x86_64 vim-filesystem-2:8.0.1763-15.el8.noarch
  which-2.21-12.el8.x86_64             

Complete!
Removing intermediate container df98ca8004f9
 ---> ba1f6578ac72
Step 7/15 : ENV MYPATH /usr/local
 ---> Running in 672138406cf8
Removing intermediate container 672138406cf8
 ---> 1ae6f23ad489
Step 8/15 : WORKDIR $MYPATH
 ---> Running in ef214f3eea20
Removing intermediate container ef214f3eea20
 ---> ebc8c0e5d5a5
Step 9/15 : ENV JAVA_HOME /usr/local/jdk1.8.0_281
 ---> Running in 886b7d9a4f5c
Removing intermediate container 886b7d9a4f5c
 ---> bfc1f51711c6
Step 10/15 : ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tool.jar
 ---> Running in 319ed3d2707a
Removing intermediate container 319ed3d2707a
 ---> 49a949804294
Step 11/15 : ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.64
 ---> Running in ef1f4158ff7b
Removing intermediate container ef1f4158ff7b
 ---> 2a51151af0b8
Step 12/15 : ENV CATALINA_BASH /usr/local/apache-tomcat-8.5.64
 ---> Running in 7fae077190b5
Removing intermediate container 7fae077190b5
 ---> cc862a47739f
Step 13/15 : ENV PATH $PATH:$JAVA_HOME/bin;$CATALINA_HOME/lib;$CATALINA_HOME/bin
 ---> Running in 36d8c834c820
Removing intermediate container 36d8c834c820
 ---> 007eb0054592
Step 14/15 : EXPOSE 8080
 ---> Running in e738bb78b849
Removing intermediate container e738bb78b849
 ---> e52bf7bcc799
Step 15/15 : CMD /usr/local/apache-tomcat-8.5.64/bin/startup.sh && tail -F /usr/local/apache-tomcat-8.5.64/bin/logs/catalina.out
 ---> Running in 306813fa3585
Removing intermediate container 306813fa3585
 ---> 0a6c226dfed3
Successfully built 0a6c226dfed3
Successfully tagged diytomcat:latest

[root@xiaozhang1999 tomcatfile]# docker images
REPOSITORY            TAG       IMAGE ID       CREATED          SIZE
diytomcat             latest    0a6c226dfed3   43 minutes ago   641MB

[root@xiaozhang1999 tomcatfile]# docker container rm b1902a145e6f1d010804e397311fadf22a7d45d7f4bf7fe0701e0dcd4971f09a
b1902a145e6f1d010804e397311fadf22a7d45d7f4bf7fe0701e0dcd4971f09a
[root@xiaozhang1999 tomcatfile]# docker run -d -p9090:8080 --name ztsqtomcat -v /root/tomcatfile/diytomcatcontainer/test:/usr/local/apache-tomcat-8.5.64/webapps/test -v/root/tomcatfile/diytomcatcontainer/tomcatlogs/:/usr/local/apache-tomcat-8.5.64/logs diytomcat
504599f541e8ff21f571684fe30475d6cb00674de0ba6659de47bb1fa5bdc0cc

[root@xiaozhang1999 tomcatfile]# 
[root@xiaozhang1999 tomcatfile]# docker exec -it 504599f541e8ff21f5716 /bin/bash
[root@445cf6c6380c local]# pwd
/usr/local
[root@445cf6c6380c local]# ll
bash: ll: command not found
[root@445cf6c6380c local]# ls -l
total 0
drwxr-xr-x 1 root  root   45 Jun 30 01:27 apache-tomcat-8.5.64
drwxr-xr-x 2 root  root    6 Nov  3  2020 bin
drwxr-xr-x 2 root  root    6 Nov  3  2020 etc
drwxr-xr-x 2 root  root    6 Nov  3  2020 games
drwxr-xr-x 2 root  root    6 Nov  3  2020 include
drwxr-xr-x 8 10143 10143 273 Dec  9  2020 jdk1.8.0_281
drwxr-xr-x 2 root  root    6 Nov  3  2020 lib
drwxr-xr-x 3 root  root   17 Dec  4  2020 lib64
drwxr-xr-x 2 root  root    6 Nov  3  2020 libexec
-rw-r--r-- 1 root  root    0 Jun 30 01:18 readme.txt
drwxr-xr-x 2 root  root    6 Nov  3  2020 sbin
drwxr-xr-x 5 root  root   49 Dec  4  2020 share
drwxr-xr-x 2 root  root    6 Nov  3  2020 src
[root@445cf6c6380c local]# cd apache-tomcat-8.5.64
[root@445cf6c6380c apache-tomcat-8.5.64]# ls -l
total 128
-rw-r----- 1 root root 19318 Mar  4 23:17 BUILDING.txt
-rw-r----- 1 root root  5586 Mar  4 23:17 CONTRIBUTING.md
-rw-r----- 1 root root 57011 Mar  4 23:17 LICENSE
-rw-r----- 1 root root  1726 Mar  4 23:17 NOTICE
-rw-r----- 1 root root  3257 Mar  4 23:17 README.md
-rw-r----- 1 root root  7136 Mar  4 23:17 RELEASE-NOTES
-rw-r----- 1 root root 16507 Mar  4 23:17 RUNNING.txt
drwxr-x--- 2 root root  4096 Mar  4 23:17 bin
drwx------ 1 root root    40 Jun 30 03:38 conf
drwxr-x--- 2 root root  4096 Mar  4 23:16 lib
drwxr-xr-x 2 root root   197 Jun 30 03:38 logs
drwxr-x--- 2 root root    30 Mar  4 23:16 temp
drwxr-x--- 1 root root    18 Jun 30 03:38 webapps
drwxr-x--- 1 root root    22 Jun 30 03:38 work
[root@445cf6c6380c apache-tomcat-8.5.64]# pwd
/usr/local/apache-tomcat-8.5.64
[root@xiaozhang1999 tomcatfile]# cd /root
[root@xiaozhang1999 ~]# ll
total 28
drwxr-xr-x 2 root root     6 Apr  1 16:16 Desktop
drwxr-xr-x 2 root root     6 Apr  1 16:16 Documents
drwxr-xr-x 2 root root     6 Apr  1 16:16 Downloads
drwxr-xr-x 3 root root    85 Jun 29 17:07 java
drwxr-xr-x 2 root root     6 Apr  1 16:16 Music
drwxr-xr-x 3 root root    75 Mar 31 17:32 mysql
-rw-r--r-- 1 root root 25548 Apr  7  2017 mysql57-community-release-el7-10.noarch.rpm
drwxr-xr-x 2 root root     6 Apr  1 16:16 Pictures
drwxr-xr-x 2 root root     6 Apr  1 16:16 Public
drwxr-xr-x 2 root root     6 Apr  1 16:16 Templates
-rw-r--r-- 1 root root     0 Jun 21 16:24 test.java
drwxr-xr-x 3 root root    58 Jun 29 17:31 tomcat
drwxr-xr-x 3 root root   119 Jun 30 11:38 tomcatfile
drwxr-xr-x 2 root root     6 Apr  1 16:16 Videos
[root@xiaozhang1999 ~]# cd tomcatfile
[root@xiaozhang1999 tomcatfile]# ll
total 150636
-rw-r--r-- 1 root root  10520844 Mar 29 11:28 apache-tomcat-8.5.64.tar.gz
drwxr-xr-x 4 root root        36 Jun 30 11:38 diytomcatcontainer
-rw-r--r-- 1 root root       632 Jun 29 18:03 Dockerfile
-rw-r--r-- 1 root root 143722924 Mar 30 09:51 jdk-8u281-linux-x64.tar.gz
[root@xiaozhang1999 tomcatfile]# cd diytomcatcontainer
[root@xiaozhang1999 diytomcatcontainer]# 
[root@xiaozhang1999 diytomcatcontainer]# ll
total 0
drwxr-xr-x 2 root root   6 Jun 30 11:38 test
drwxr-xr-x 2 root root 197 Jun 30 11:38 tomcatlogs
[root@xiaozhang1999 diytomcatcontainer]# cd test
[root@xiaozhang1999 test]# ll
total 0
[root@xiaozhang1999 test]# mkdir WEB-INF
[root@xiaozhang1999 test]# vim web.xml
[root@xiaozhang1999 test]# cat web.xml
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		xmlns="http://java.sun.com/xml/ns/javaee"
			xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
</web-app>
[root@xiaozhang1999 test]# vim index.jsp

8.测试页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<br>傻逼覃玉枭</br>
<%
system.out.println("test logs");
%>
</body>
</html>

二)上传到DockerHub

  • 1.注册https://hub.docker.com/账号并登录、这里我的注册名为lanceee。在下面会用到。

[root@xiaozhang1999 /]# docker login -u lanceee

  • 2.发布镜像到DockerHub、自己发布的镜像尽量带版本号。不带版本号默认最新latest版本

报错信息:denied: requested access to the resource is denied
解决办法:REPOSITORY下创建的镜像名改为:username/images name
报错信息:The push refers to repository [docker.io/lanceee/diytomcat]
An image does not exist locally with the tag: lanceee/diytomcat
解决办法:docker tag image id username/images name:tag
docker push lanceee/diytomcat:666

去dockerhub上查看、验证是否成功

推荐阅读