一)制作属于自己的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上查看、验证是否成功