“b'OCI 运行时创建失败:container_linux.go:380?

"b'OCI runtime create failed: container_linux.go:380?

Client Error: Bad Request ("b'OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "/usr/lib/jvm/java-8-openjdk-amd64/bin/java": stat /usr/lib/jvm/java-8-openjdk-amd64/bin/java: no such file or directory: unknown'")

这是我的错误,当我使用 docker-compose 和 docker 时,我无法解决这个问题 我的版本

Client: Docker Engine - Community
 Version:           19.03.12
 API version:       1.40
 Go version:        go1.13.10
 Git commit:        48a66213fe
 Built:             Mon Jun 22 15:45:44 2020
 OS/Arch:           linux/amd64
 Experimental:      false
Server: Docker Engine - Community
 Engine:
  Version:          19.03.12
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.13.10
  Git commit:       48a66213fe
  Built:            Mon Jun 22 15:44:15 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.12
  GitCommit:        7b11cfaabd73bb80907dd23182b9347b4245eb5d
 runc:
  Version:          1.0.2
  GitCommit:        v1.0.2-0-g52b36a2
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

docker compose version
docker-compose version 1.25.0, build unknown
docker-py version: 4.1.0
CPython version: 3.8.10
OpenSSL version: OpenSSL 1.1.1f  31 Mar 2020

Docker 文件

FROM openjdk:8-jdk

# Install maven
RUN apt-get update
RUN apt-get install -y maven

WORKDIR /code

# Prepare by downloading dependencies
ADD pom.xml /code/pom.xml
RUN ["mvn", "dependency:resolve", "-U"]
RUN ["mvn", "verify"]

# Adding source, compile and package into a fat jar
ADD src /code/src
RUN ["mvn", "package", "-DskipTest=True", "-Dmaven.javadoc.skip=true", "-Dmaven.test.skip=true", "--offline"]

EXPOSE 4458
# CMD ["ls", "-la", "target/"]
ENTRYPOINT ["/usr/lib/jvm/java-8-openjdk-amd64/bin/java", "-jar", "target/pbft-jar-with-dependencies.jar"]

docker-compose.yml


version: '2'
services:
  node_java:
    extends:
      file: docker-compose.node-java.yml
      service: node
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      NODE_DEBUG: "False"

docker-compose.node-java.yml

version: '2'
services:
  node:
    build: .
    environment:
      NODE_PORT: 4458
    command: ["-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"]
    # restart: "unless-stopped"
    # stdin_open: true
  node-pi:
    build:
      context: .
      dockerfile: ARM.Dockerfile
    environment:
      NODE_PORT: 4458

任何建议都会有所帮助!!!

非常感谢

我认为图像中 java 可执行文件的路径与您使用的路径不同。 您可以尝试像这样替换您的 DOCKERFILE 中的路径吗?

ENTRYPOINT ["/usr/local/openjdk-8/bin/java", "-jar", "target/pbft-jar-with-dependencies.jar"]

我使用以下程序来找出答案:

docker pull openjdk:8-jdk
docker run openjdk:8-jdk
docker container ls -a

mkdir -p /tmp/snapshot
cd /tmp/snapshot
docker export 7778d9fa6ce9> snapshot.tar
tar -xvf snapshot.tar
find . -type f -name java

修改旧 java 站点

至此

/usr/local/openjdk-8/bin/java

错误

秒 我使用旧版本 docker 和 docker-compose

修复了这个问题

修改版本:

由于我的项目是2017年的,所以我选择了docker的旧版本和接近2017年的dockercompose版本


详细版

 docker-ce | 5:18.09.0~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages

docker撰写

https://github.com/docker/compose/releases/tag/1.16.1

1.16.1