【发布时间】:2018-07-24 13:34:20
【问题描述】:
我有这个 Dockerfile,它是一个带有 tomcat 和 Java 的高山映像。 当我以分离模式运行容器时,我无法运行 catalina.sh 脚本。我收到以下错误:
$ docker run -d --name login2 -p 8080:8080 alpine:login-o365
8fbd3fda6c2f171045f2338abf4887b5a2374e1f42537717649a3fb6b61c4cb2
C:\Program Files\Docker Toolbox\docker.exe: Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"/opt/tomcat/bin\": permission denied": unknown.
出现此错误后,我手动访问容器并检查 /opt/tomcat/bin 中的 catalina.sh 是否已完美设置权限,如下所示:
-rwxr-x--- 1 个根 21579 2016 年 6 月 9 日 catalina.sh
这可能是什么错误?这是与 alpine 有关的东西,它是一个较小的图像还是什么?这是我拥有的 Dockerfile:
FROM davidcaste/alpine-java-unlimited-jce:jre8
ENV TOMCAT_MAJOR=8 \
TOMCAT_VERSION=8.5.3 \
TOMCAT_HOME=/opt/tomcat \
CATALINA_HOME=/opt/tomcat/bin \
CATALINA_OUT=/dev/null
RUN apk upgrade --update && \
apk add --update curl bash wget && \
curl -jksSL -o /tmp/apache-tomcat.tar.gz http://archive.apache.org/dist/tomcat/tomcat-${TOMCAT_MAJOR}/v${TOMCAT_VERSION}/bin/apache-tomcat-${TOMCAT_VERSION}.tar.gz && \
gunzip /tmp/apache-tomcat.tar.gz && \
tar -C /opt -xf /tmp/apache-tomcat.tar && \
ln -s /opt/apache-tomcat-${TOMCAT_VERSION} ${TOMCAT_HOME} && \
rm -rf ${TOMCAT_HOME}/webapps/* && \
apk del curl && \
rm -rf /tmp/* /var/cache/apk/*
COPY logging.properties ${TOMCAT_HOME}/conf/logging.properties
COPY server.xml ${TOMCAT_HOME}/conf/server.xml
VOLUME ["/logs"]
EXPOSE 8080
CMD ["/opt/tomcat/bin", "-n", "-c", "catalina.sh"]
【问题讨论】:
-
为什么不使用official Tomcat images?
-
我认为你的 CMD 指令是错误的。正如您所做的那样,它将以如下方式执行:
/opt/tomcat/bin -n -c catalina.sh。但是/opt/tomcat/bin只是一个目录。为什么不直接使用/opt/tomcat/bin/catalina.sh。 -
嘿,我用tomcat的官方图片解决了。
标签: docker dockerfile tomcat8 alpine