Docker 高山码头上的catalina.sh不´;开始

Docker 高山码头上的catalina.sh不´;开始,docker,dockerfile,tomcat8,alpine,Docker,Dockerfile,Tomcat8,Alpine,我有一个Dockerfile,它是一个带有tomcat和Java的阿尔卑斯山图像。 问题是,在分离模式下运行容器时,我无法运行catalina.sh脚本。我发现以下错误: $ docker run -d --name login2 -p 8080:8080 alpine:login-o365 8fbd3fda6c2f171045f2338abf4887b5a2374e1f42537717649a3fb6b61c4cb2 C:\Program Files\Docker Toolbox\docker

我有一个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

这是什么错误?这和阿尔卑斯山有关吗?它是一个较小的图像还是什么?这是我的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"]

也许使用这个会有所帮助

CMD /opt/tomcat/bin/catalina.sh run

为什么不使用CMD?我认为你的CMD指令是错误的。正如您所做的,它将以如下方式执行:
/opt/tomcat/bin-n-ccatalina.sh
。但是
/opt/tomcat/bin
只是一个目录。为什么不直接使用
/opt/tomcat/bin/catalina.sh
。嘿,我用tomcat的官方图片解决了这个问题。