<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://wiki.linuxsa.org/index.php?action=history&amp;feed=atom&amp;title=Docker_tomcat</id>
	<title>Docker tomcat - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.linuxsa.org/index.php?action=history&amp;feed=atom&amp;title=Docker_tomcat"/>
	<link rel="alternate" type="text/html" href="https://wiki.linuxsa.org/index.php?title=Docker_tomcat&amp;action=history"/>
	<updated>2026-04-20T12:45:29Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://wiki.linuxsa.org/index.php?title=Docker_tomcat&amp;diff=320&amp;oldid=prev</id>
		<title>Evan：​导入1个版本</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxsa.org/index.php?title=Docker_tomcat&amp;diff=320&amp;oldid=prev"/>
		<updated>2019-10-14T13:48:48Z</updated>

		<summary type="html">&lt;p&gt;导入1个版本&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=docker tomcat=&lt;br /&gt;
==on debian==&lt;br /&gt;
===目录===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
tomcat]# tree .&lt;br /&gt;
.&lt;br /&gt;
|-- apache-tomcat-8.5.42.tar.gz&lt;br /&gt;
|-- Dockerfile&lt;br /&gt;
|-- index.jsp&lt;br /&gt;
|-- jdk-8u211-linux-x64.tar.gz&lt;br /&gt;
|-- server.xml&lt;br /&gt;
|-- webapps&lt;br /&gt;
|   `-- ROOT&lt;br /&gt;
|       `-- index.jsp&lt;br /&gt;
`-- web.xml&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
cat index.jsp &lt;br /&gt;
version: 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
docker build -t evan886/debian_tomcat:v1  .&lt;br /&gt;
&lt;br /&gt;
docker push evan886/debian_tomcat:v1 &lt;br /&gt;
&lt;br /&gt;
docker.io/evan886/debian_tomcat&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
单个运行&lt;br /&gt;
&lt;br /&gt;
docker images &lt;br /&gt;
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE&lt;br /&gt;
evan886/debian_tomcat   v1                  51e36d5593e1        2 minutes ago       521MB&lt;br /&gt;
&lt;br /&gt;
docker run -p 8081:8080 evan886/debian_tomcat:v1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===dockerfile===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;gt;&amp;gt;  Dockerfile  &amp;lt;&amp;lt;EOF&lt;br /&gt;
&lt;br /&gt;
FROM debian:stretch&lt;br /&gt;
#FROM debian:stretch-slim&lt;br /&gt;
# 指定管理员&lt;br /&gt;
MAINTAINER  linuxsa.org&lt;br /&gt;
# 解压jdk包到指定目录&lt;br /&gt;
ADD jdk-8u211-linux-x64.tar.gz /usr/local&lt;br /&gt;
# 安装jdk包到指定目录&lt;br /&gt;
ENV JAVA_HOME /usr/local/jdk1.8.0_211&lt;br /&gt;
&lt;br /&gt;
# http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.42/bin/apache-tomcat-8.5.42.tar.gz&lt;br /&gt;
# 解压tomcat包到指定目录&lt;br /&gt;
ADD apache-tomcat-8.5.42.tar.gz /usr/local&lt;br /&gt;
&lt;br /&gt;
#RUN rm -f /usr/local/*.tar.gz　　　　　　　　　　　　#删除安装包 容器轻量化&lt;br /&gt;
RUN rm -rf /usr/local/apache-tomcat-8.5.42/webapps/ROOT/*&lt;br /&gt;
RUN rm -rf /usr/local/apache-tomcat-8.5.42/webapps/ROOT/index.jsp&lt;br /&gt;
# 将本地配置文件复制到镜像内&lt;br /&gt;
#&lt;br /&gt;
#COPY server.xml /usr/local/apache-tomcat-8.5.42/conf&lt;br /&gt;
#COPY webapps /usr/local/apache-tomcat-8.5.42/&lt;br /&gt;
ADD  index.jsp  /usr/local/apache-tomcat-8.5.42/webapps/ROOT/&lt;br /&gt;
COPY  index.jsp  /usr/local/apache-tomcat-8.5.42/webapps/ROOT/&lt;br /&gt;
#/usr/local/apache-tomcat-8.5.42/webapps/ROOT&lt;br /&gt;
#RUN rm -rf /usr/local/apache-tomcat-8.5.42/webapps/ROOT/*&lt;br /&gt;
# 指定服务暴露端口&lt;br /&gt;
EXPOSE 8080&lt;br /&gt;
# 启动tomcat服务&lt;br /&gt;
ENTRYPOINT [&amp;quot;/usr/local/apache-tomcat-8.5.42/bin/catalina.sh&amp;quot;, &amp;quot;run&amp;quot;]&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===server.xml===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?xml version=&amp;#039;1.0&amp;#039; encoding=&amp;#039;utf-8&amp;#039;?&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
  Licensed to the Apache Software Foundation (ASF) under one or more&lt;br /&gt;
  contributor license agreements.  See the NOTICE file distributed with&lt;br /&gt;
  this work for additional information regarding copyright ownership.&lt;br /&gt;
  The ASF licenses this file to You under the Apache License, Version 2.0&lt;br /&gt;
  (the &amp;quot;License&amp;quot;); you may not use this file except in compliance with&lt;br /&gt;
  the License.  You may obtain a copy of the License at&lt;br /&gt;
&lt;br /&gt;
      http://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt;
&lt;br /&gt;
  Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
  distributed under the License is distributed on an &amp;quot;AS IS&amp;quot; BASIS,&lt;br /&gt;
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
  See the License for the specific language governing permissions and&lt;br /&gt;
  limitations under the License.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;!-- Note:  A &amp;quot;Server&amp;quot; is not itself a &amp;quot;Container&amp;quot;, so you may not&lt;br /&gt;
     define subcomponents such as &amp;quot;Valves&amp;quot; at this level.&lt;br /&gt;
     Documentation at /docs/config/server.html&lt;br /&gt;
 --&amp;gt;&lt;br /&gt;
&amp;lt;Server port=&amp;quot;8005&amp;quot; shutdown=&amp;quot;SHUTDOWN&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Listener className=&amp;quot;org.apache.catalina.startup.VersionLoggerListener&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Security listener. Documentation at /docs/config/listeners.html&lt;br /&gt;
  &amp;lt;Listener className=&amp;quot;org.apache.catalina.security.SecurityListener&amp;quot; /&amp;gt;&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
  &amp;lt;!--APR library loader. Documentation at /docs/apr.html --&amp;gt;&lt;br /&gt;
  &amp;lt;Listener className=&amp;quot;org.apache.catalina.core.AprLifecycleListener&amp;quot; SSLEngine=&amp;quot;on&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Prevent memory leaks due to use of particular java/javax APIs--&amp;gt;&lt;br /&gt;
  &amp;lt;Listener className=&amp;quot;org.apache.catalina.core.JreMemoryLeakPreventionListener&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;Listener className=&amp;quot;org.apache.catalina.mbeans.GlobalResourcesLifecycleListener&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;Listener className=&amp;quot;org.apache.catalina.core.ThreadLocalLeakPreventionListener&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Global JNDI resources&lt;br /&gt;
       Documentation at /docs/jndi-resources-howto.html&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
  &amp;lt;GlobalNamingResources&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Editable user database that can also be used by&lt;br /&gt;
         UserDatabaseRealm to authenticate users&lt;br /&gt;
    --&amp;gt;&lt;br /&gt;
    &amp;lt;Resource name=&amp;quot;UserDatabase&amp;quot; auth=&amp;quot;Container&amp;quot;&lt;br /&gt;
              type=&amp;quot;org.apache.catalina.UserDatabase&amp;quot;&lt;br /&gt;
              description=&amp;quot;User database that can be updated and saved&amp;quot;&lt;br /&gt;
              factory=&amp;quot;org.apache.catalina.users.MemoryUserDatabaseFactory&amp;quot;&lt;br /&gt;
              pathname=&amp;quot;conf/tomcat-users.xml&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/GlobalNamingResources&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- A &amp;quot;Service&amp;quot; is a collection of one or more &amp;quot;Connectors&amp;quot; that share&lt;br /&gt;
       a single &amp;quot;Container&amp;quot; Note:  A &amp;quot;Service&amp;quot; is not itself a &amp;quot;Container&amp;quot;,&lt;br /&gt;
       so you may not define subcomponents such as &amp;quot;Valves&amp;quot; at this level.&lt;br /&gt;
       Documentation at /docs/config/service.html&lt;br /&gt;
   --&amp;gt;&lt;br /&gt;
  &amp;lt;Service name=&amp;quot;Catalina&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--The connectors can use a shared executor, you can define one or more named thread pools--&amp;gt;&lt;br /&gt;
    &amp;lt;!--&lt;br /&gt;
    &amp;lt;Executor name=&amp;quot;tomcatThreadPool&amp;quot; namePrefix=&amp;quot;catalina-exec-&amp;quot;&lt;br /&gt;
        maxThreads=&amp;quot;150&amp;quot; minSpareThreads=&amp;quot;4&amp;quot;/&amp;gt;&lt;br /&gt;
    --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- A &amp;quot;Connector&amp;quot; represents an endpoint by which requests are received&lt;br /&gt;
         and responses are returned. Documentation at :&lt;br /&gt;
         Java HTTP Connector: /docs/config/http.html (blocking &amp;amp; non-blocking)&lt;br /&gt;
         Java AJP  Connector: /docs/config/ajp.html&lt;br /&gt;
         APR (HTTP/AJP) Connector: /docs/apr.html&lt;br /&gt;
         Define a non-SSL/TLS HTTP/1.1 Connector on port 8080&lt;br /&gt;
    --&amp;gt;&lt;br /&gt;
    &amp;lt;Connector port=&amp;quot;8080&amp;quot; protocol=&amp;quot;HTTP/1.1&amp;quot;&lt;br /&gt;
               connectionTimeout=&amp;quot;20000&amp;quot;&lt;br /&gt;
               redirectPort=&amp;quot;8443&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;!-- A &amp;quot;Connector&amp;quot; using the shared thread pool--&amp;gt;&lt;br /&gt;
    &amp;lt;!--&lt;br /&gt;
    &amp;lt;Connector executor=&amp;quot;tomcatThreadPool&amp;quot;&lt;br /&gt;
               port=&amp;quot;8080&amp;quot; protocol=&amp;quot;HTTP/1.1&amp;quot;&lt;br /&gt;
               connectionTimeout=&amp;quot;20000&amp;quot;&lt;br /&gt;
               redirectPort=&amp;quot;8443&amp;quot; /&amp;gt;&lt;br /&gt;
    --&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Define a SSL/TLS HTTP/1.1 Connector on port 8443&lt;br /&gt;
         This connector uses the NIO implementation that requires the JSSE&lt;br /&gt;
         style configuration. When using the APR/native implementation, the&lt;br /&gt;
         OpenSSL style configuration is required as described in the APR/native&lt;br /&gt;
         documentation --&amp;gt;&lt;br /&gt;
    &amp;lt;!--&lt;br /&gt;
    &amp;lt;Connector port=&amp;quot;8443&amp;quot; protocol=&amp;quot;org.apache.coyote.http11.Http11NioProtocol&amp;quot;&lt;br /&gt;
               maxThreads=&amp;quot;150&amp;quot; SSLEnabled=&amp;quot;true&amp;quot; scheme=&amp;quot;https&amp;quot; secure=&amp;quot;true&amp;quot;&lt;br /&gt;
               clientAuth=&amp;quot;false&amp;quot; sslProtocol=&amp;quot;TLS&amp;quot; /&amp;gt;&lt;br /&gt;
    --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Define an AJP 1.3 Connector on port 8009 --&amp;gt;&lt;br /&gt;
    &amp;lt;Connector port=&amp;quot;8009&amp;quot; protocol=&amp;quot;AJP/1.3&amp;quot; redirectPort=&amp;quot;8443&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- An Engine represents the entry point (within Catalina) that processes&lt;br /&gt;
         every request.  The Engine implementation for Tomcat stand alone&lt;br /&gt;
         analyzes the HTTP headers included with the request, and passes them&lt;br /&gt;
         on to the appropriate Host (virtual host).&lt;br /&gt;
         Documentation at /docs/config/engine.html --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- You should set jvmRoute to support load-balancing via AJP ie :&lt;br /&gt;
    &amp;lt;Engine name=&amp;quot;Catalina&amp;quot; defaultHost=&amp;quot;localhost&amp;quot; jvmRoute=&amp;quot;jvm1&amp;quot;&amp;gt;&lt;br /&gt;
    --&amp;gt;&lt;br /&gt;
    &amp;lt;Engine name=&amp;quot;Catalina&amp;quot; defaultHost=&amp;quot;localhost&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;!--For clustering, please take a look at documentation at:&lt;br /&gt;
          /docs/cluster-howto.html  (simple how to)&lt;br /&gt;
          /docs/config/cluster.html (reference documentation) --&amp;gt;&lt;br /&gt;
      &amp;lt;!--&lt;br /&gt;
      &amp;lt;Cluster className=&amp;quot;org.apache.catalina.ha.tcp.SimpleTcpCluster&amp;quot;/&amp;gt;&lt;br /&gt;
      --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;!-- Use the LockOutRealm to prevent attempts to guess user passwords&lt;br /&gt;
           via a brute-force attack --&amp;gt;&lt;br /&gt;
      &amp;lt;Realm className=&amp;quot;org.apache.catalina.realm.LockOutRealm&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;!-- This Realm uses the UserDatabase configured in the global JNDI&lt;br /&gt;
             resources under the key &amp;quot;UserDatabase&amp;quot;.  Any edits&lt;br /&gt;
             that are performed against this UserDatabase are immediately&lt;br /&gt;
             available for use by the Realm.  --&amp;gt;&lt;br /&gt;
        &amp;lt;Realm className=&amp;quot;org.apache.catalina.realm.UserDatabaseRealm&amp;quot;&lt;br /&gt;
               resourceName=&amp;quot;UserDatabase&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/Realm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;Host name=&amp;quot;localhost&amp;quot;  appBase=&amp;quot;webapps&amp;quot;&lt;br /&gt;
            unpackWARs=&amp;quot;true&amp;quot; autoDeploy=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- SingleSignOn valve, share authentication between web applications&lt;br /&gt;
             Documentation at: /docs/config/valve.html --&amp;gt;&lt;br /&gt;
        &amp;lt;!--&lt;br /&gt;
        &amp;lt;Valve className=&amp;quot;org.apache.catalina.authenticator.SingleSignOn&amp;quot; /&amp;gt;&lt;br /&gt;
        --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- Access log processes all example.&lt;br /&gt;
             Documentation at: /docs/config/valve.html&lt;br /&gt;
             Note: The pattern used is equivalent to using pattern=&amp;quot;common&amp;quot; --&amp;gt;&lt;br /&gt;
        &amp;lt;Valve className=&amp;quot;org.apache.catalina.valves.AccessLogValve&amp;quot; directory=&amp;quot;logs&amp;quot;&lt;br /&gt;
               prefix=&amp;quot;localhost_access_log&amp;quot; suffix=&amp;quot;.txt&amp;quot;&lt;br /&gt;
               pattern=&amp;quot;%h %l %u %t &amp;amp;quot;%r&amp;amp;quot; %s %b&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/Host&amp;gt;&lt;br /&gt;
    &amp;lt;/Engine&amp;gt;&lt;br /&gt;
  &amp;lt;/Service&amp;gt;&lt;br /&gt;
&amp;lt;/Server&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://my.oschina.net/braveCS/blog/1504783 很值得参考 更新也有意思docker&amp;amp;k8s部署tomcat记录]&lt;br /&gt;
&lt;br /&gt;
==docker hub==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
docker pull  tomcat:8.5&lt;br /&gt;
&lt;br /&gt;
docker exec -it tomcat1 /bin/bash&lt;br /&gt;
&lt;br /&gt;
三、部署应用&lt;br /&gt;
&lt;br /&gt;
部署应用有两种方式：&lt;br /&gt;
1、挂载宿主主机上的应用目录&lt;br /&gt;
&lt;br /&gt;
假如我们的应用在目录：/Users/apple/webapp目录下&lt;br /&gt;
&lt;br /&gt;
docker run --privileged=true -v /data/web1:/usr/local/tomcat/webapps/demo -d -p 8080:8080 --name tomcat1 tomcat:8.5&lt;br /&gt;
&lt;br /&gt;
    其中：–privileged=true是授予docker挂载的权限&lt;br /&gt;
    /data/web1 宿主主机目录&lt;br /&gt;
    /usr/local/tomcat/webapps/demo docker容器tomcat目录&lt;br /&gt;
    -p 端口映射&lt;br /&gt;
    –name 容器名称&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==old Docker使用Dockerfile创建Centos(tomcat+jdk)镜像 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[root@localhost apps]# ls &lt;br /&gt;
 Dockerfile  jdk  jdk-12.0.1_linux-x64_bin.tar.gz   tomcat &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 cat  Dockerfile &lt;br /&gt;
#指定操作的镜像&lt;br /&gt;
FROM centos&lt;br /&gt;
# 维护者信息&lt;br /&gt;
MAINTAINER evan886@gmail.com&lt;br /&gt;
 &lt;br /&gt;
#执行命令：创建目录&lt;br /&gt;
RUN mkdir -p /data/apps/&lt;br /&gt;
#将jdk1.8.0_171添加到镜像centos的/usr/local/soft/目录下，并命名为jdk&lt;br /&gt;
ADD jdk /data/apps/&lt;br /&gt;
#将apache-tomcat-8.5.31添加到镜像centos的/usr/local/soft/目录下，并命名为tomcat&lt;br /&gt;
ADD tomcat  /data/apps/&lt;br /&gt;
 &lt;br /&gt;
#添加环境变量&lt;br /&gt;
ENV JAVA_HOME /data/apps/jdk&lt;br /&gt;
#ENV CATALINA_HOME /data/apps/tomcat&lt;br /&gt;
#ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin&lt;br /&gt;
&lt;br /&gt;
#tomcat evan&lt;br /&gt;
ENV CATALINA_HOME /data/apps/tomcat&lt;br /&gt;
ENV PATH $CATALINA_HOME/bin:$PATH&lt;br /&gt;
RUN mkdir -p &amp;quot;$CATALINA_HOME&amp;quot;&lt;br /&gt;
WORKDIR $CATALINA_HOME&lt;br /&gt;
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin&lt;br /&gt;
#ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin&lt;br /&gt;
# let &amp;quot;Tomcat Native&amp;quot; live somewhere isolated&lt;br /&gt;
# ENV TOMCAT_NATIVE_LIBDIR $CATALINA_HOME/native-jni-lib&lt;br /&gt;
# ENV LD_LIBRARY_PATH ${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$TOMCAT_NATIVE_LIBDIR&lt;br /&gt;
 &lt;br /&gt;
#暴露8080端口&lt;br /&gt;
EXPOSE 8080&lt;br /&gt;
 &lt;br /&gt;
#启动时运行tomcat&lt;br /&gt;
#CMD [&amp;quot;/data/apps/tomcat/bin/catalina.sh&amp;quot;,&amp;quot;run&amp;quot;]&lt;br /&gt;
CMD [&amp;quot;/data/apps/tomcat/catalina.sh&amp;quot;,&amp;quot;run&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
docker build -t evan886/centos_tomcat:v1  .&lt;br /&gt;
&lt;br /&gt;
docker run -d -p 8080:8080 --name  centos_tomcat evan886/centos_tomcat:v1&lt;br /&gt;
&lt;br /&gt;
ot@k8s-node1:/data/apps# docker run -d -p 8080:8080 --name  centos_tomcat evan886/centos_tomcat:v1&lt;br /&gt;
6156c685fb3369d5d93ab391a75212b14b476959a38eef746871f4890021a53b&lt;br /&gt;
docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused &amp;quot;exec: \&amp;quot;/data/apps/tomcat/bin/catalina.sh\&amp;quot;: stat /data/apps/tomcat/bin/catalina.sh: no such file or directory&amp;quot;: unknown.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://blog.csdn.net/qq_37936542/article/details/80824389 Docker使用Dockerfile创建Centos(tomcat+jdk)镜像]&lt;br /&gt;
&lt;br /&gt;
==Dockerfile 构建==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#创建目录tomcat,用于存放后面的相关东西。&lt;br /&gt;
mkdir -p ~/tomcat/webapps ~/tomcat/logs ~/tomcat/conf&lt;br /&gt;
&lt;br /&gt;
webapps目录将映射为tomcat容器配置的应用程序目录&lt;br /&gt;
logs目录将映射为tomcat容器的日志目录&lt;br /&gt;
conf目录里的配置文件将映射为tomcat容器的配置文件&lt;br /&gt;
&lt;br /&gt;
进入创建的tomcat目录，创建Dockerfile&lt;br /&gt;
&lt;br /&gt;
FROM openjdk:8-jre&lt;br /&gt;
&lt;br /&gt;
ENV CATALINA_HOME /usr/local/tomcat&lt;br /&gt;
ENV PATH $CATALINA_HOME/bin:$PATH&lt;br /&gt;
RUN mkdir -p &amp;quot;$CATALINA_HOME&amp;quot;&lt;br /&gt;
WORKDIR $CATALINA_HOME&lt;br /&gt;
&lt;br /&gt;
# let &amp;quot;Tomcat Native&amp;quot; live somewhere isolated&lt;br /&gt;
ENV TOMCAT_NATIVE_LIBDIR $CATALINA_HOME/native-jni-lib&lt;br /&gt;
ENV LD_LIBRARY_PATH ${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$TOMCAT_NATIVE_LIBDIR&lt;br /&gt;
&lt;br /&gt;
# runtime dependencies for Tomcat Native Libraries&lt;br /&gt;
# Tomcat Native 1.2+ requires a newer version of OpenSSL than debian:jessie has available&lt;br /&gt;
# &amp;gt; checking OpenSSL library version &amp;gt;= 1.0.2...&lt;br /&gt;
# &amp;gt; configure: error: Your version of OpenSSL is not compatible with this version of tcnative&lt;br /&gt;
# see http://tomcat.10.x6.nabble.com/VOTE-Release-Apache-Tomcat-8-0-32-tp5046007p5046024.html (and following discussion)&lt;br /&gt;
# and https://github.com/docker-library/tomcat/pull/31&lt;br /&gt;
ENV OPENSSL_VERSION 1.1.0f-3+deb9u2&lt;br /&gt;
RUN set -ex; \&lt;br /&gt;
    currentVersion=&amp;quot;$(dpkg-query --show --showformat &amp;#039;${Version}\n&amp;#039; openssl)&amp;quot;; \&lt;br /&gt;
    if dpkg --compare-versions &amp;quot;$currentVersion&amp;quot; &amp;#039;&amp;lt;&amp;lt;&amp;#039; &amp;quot;$OPENSSL_VERSION&amp;quot;; then \&lt;br /&gt;
        if ! grep -q stretch /etc/apt/sources.list; then \&lt;br /&gt;
# only add stretch if we&amp;#039;re not already building from within stretch&lt;br /&gt;
            { \&lt;br /&gt;
                echo &amp;#039;deb http://deb.debian.org/debian stretch main&amp;#039;; \&lt;br /&gt;
                echo &amp;#039;deb http://security.debian.org stretch/updates main&amp;#039;; \&lt;br /&gt;
                echo &amp;#039;deb http://deb.debian.org/debian stretch-updates main&amp;#039;; \&lt;br /&gt;
            } &amp;gt; /etc/apt/sources.list.d/stretch.list; \&lt;br /&gt;
            { \&lt;br /&gt;
# add a negative &amp;quot;Pin-Priority&amp;quot; so that we never ever get packages from stretch unless we explicitly request them&lt;br /&gt;
                echo &amp;#039;Package: *&amp;#039;; \&lt;br /&gt;
                echo &amp;#039;Pin: release n=stretch*&amp;#039;; \&lt;br /&gt;
                echo &amp;#039;Pin-Priority:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=更新=&lt;br /&gt;
==war包更新到容器 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
docker cp tomcataDemo.war 3cb492a27475 :/usr/local/tomcat/webapps #id&lt;br /&gt;
&lt;br /&gt;
docker cp tomcatDemo.war tomcat1:/usr/local/tomcat/webapps  #name&lt;br /&gt;
&lt;br /&gt;
#启动tomcat 或者重启 docker restart 【容器id】&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
docker restart    tomcat1&lt;br /&gt;
&lt;br /&gt;
docker run -p 8081:8080 docker.io/tomcat&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#cp 到母机&lt;br /&gt;
docker cp tomcat1:/usr/local/tomcat/webapps/examples/index.html .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tomcat 欢迎页面在  webapps/ROOT&lt;br /&gt;
&lt;br /&gt;
第二种 写在dockerfile 然后重build &lt;br /&gt;
&lt;br /&gt;
from docker.io/tomcat:latest #你的 tomcat的镜像&lt;br /&gt;
 MAINTAINER XXX@qq.com #作者 &lt;br /&gt;
COPY NginxDemo.war /usr/local/tomcat/webapps #放置到tomcat的webapps目录下&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==volume==&lt;br /&gt;
&lt;br /&gt;
=see also=&lt;br /&gt;
&lt;br /&gt;
[https://my.oschina.net/braveCS/blog/1504783 很值得参考docker&amp;amp;k8s部署tomcat记录]&lt;br /&gt;
&lt;br /&gt;
[https://blog.csdn.net/qq_32351227/article/details/78673591 Docker部署Tomcat及Web应用]&lt;br /&gt;
&lt;br /&gt;
https://docs.docker.com/samples/library/tomcat/&lt;br /&gt;
&lt;br /&gt;
[http://www.runoob.com/docker/docker-install-tomcat.html Docker 安装 Tomcat]&lt;br /&gt;
&lt;br /&gt;
[https://www.jianshu.com/p/1ea6165b586e Docker部署(三):Apache Tomcat]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/docker-library/tomcat/blob/7eae995786f14b4e96010bcc11338724706e30eb/8.5/jdk8/Dockerfile 官方8.5dockerfile]&lt;br /&gt;
&lt;br /&gt;
[https://blog.csdn.net/shenshucong520/article/details/77947372 docker容器下运行tomcat、部署应用]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://blog.csdn.net/qq_32351227/article/details/78673591 Docker部署Tomcat及Web应用]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://yq.aliyun.com/articles/6894 使用Docker运行Java Web应用]&lt;br /&gt;
&lt;br /&gt;
[[category:ops]] [[category: container]]&lt;/div&gt;</summary>
		<author><name>Evan</name></author>
	</entry>
</feed>