Docker运行但没有输出?

docker run一个容器,但它什么也不显示,没有输出,没有错误? docker ps显示没有正在运行的容器?

Terminal
$ docker run -d -p 80:8080 -p 443:8443 -t markdownhtml:1.1
8eba06d44bf236109cf65b7b93842e9c898370cac1740aa2bab557a0fc8e52b9

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES


大多数情况下,容器会出错并自动退出。 我们可以使用docker logs 来检查日志文件,并找出导致退出的错误。

1. docker ps -a

默认docker ps仅显示正在运行的容器。 要列出退出的容器,我们可以使用docker ps -a

Terminal
$ docker ps -a

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                            PORTS  NAMES
8eba06d44bf2        markdownhtml:1.1    "java -XX:+UnlockCom…"   5 hours ago         Exited (1) 23 seconds ago                unruffled_aryabhata
2f2318e3ffe5        8da9bbdb3a1e        "java -jar app.jar"      8 hours ago         Exited (143) About a minute ago          focused_napier
3d1588519433        markdownhtml:0.1    "java -jar app.jar"      8 hours ago         Exited (143) 3 hours ago                 gracious_haibt
a5df11a07a0e        markdownhtml:0.1    "java -jar app.jar"      10 hours ago        Exited (143) 3 hours ago                 stoic_bhaskara

// many containers...omitted

查找最近退出的容器; 在这个例子中是8eba06d44bf2

2.码头工人日志

我们可以使用docker logs来检查容器的日志文件。

Terminal
$ docker logs 8eba06d44bf2

Unrecognized VM option 'UnlockCommercialFeatures'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

在此示例中,此Unrecognized VM option 'UnlockCommercialFeatures导致启动期间错误退出。

3.修正错误

此Java选项UnlockCommercialFeatures仅在OracleJDK中可用,在其他JDK中不可用,甚至在OpenJDK中也不可用。 openjdk:8-jdk-alpine映像正在使用OpenJDK 8。

查看Dockerfile

Dockerfile
FROM openjdk:8-jdk-alpine

ARG JAR_FILE=target/markdown.jar

WORKDIR /opt/app

COPY ${JAR_FILE} app.jar

# -XX:+UnlockCommercialFeatures -XX:+FlightRecorder
ENTRYPOINT ["java","-XX:+UnlockCommercialFeatures","-XX:+FlightRecorder", "-jar","app.jar"]

但是, FlightRecorder在OpenJDK 11中是开源的,请尝试使用此openjdk11:alpine

Dockerfile
#FROM openjdk:8-jdk-alpine
FROM adoptopenjdk/openjdk11:alpine

ARG JAR_FILE=target/markdown.jar

WORKDIR /opt/app

COPY ${JAR_FILE} app.jar

# OpenJDK 11 no need -XX:+UnlockCommercialFeatures -XX:+FlightRecorder
ENTRYPOINT ["java", "-jar","app.jar"]

参考文献

  • Java 11 – Java飞行记录器
  • Docker日志文档

翻译自: https://mkyong.com/docker/docker-run-but-no-output/

你可能感兴趣的:(Docker运行但没有输出?)