【问题标题】:"b'OCI runtime create failed: container_linux.go:380?“b'OCI 运行时创建失败:container_linux.go:380?
【发布时间】:2022-01-10 10:23:35
【问题描述】:

客户端错误:错误请求(“b'OCI运行时创建失败:container_linux.go:380:启动容器进程导致:exec:“/usr/lib/jvm/java-8-openjdk-amd64/bin/java” : stat /usr/lib/jvm/java-8-openjdk-amd64/bin/java: 没有这样的文件或目录: 未知'")

这是我的错误,当我使用 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

Dockerfile

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

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

非常感谢

【问题讨论】:

  • 我认为它抱怨缺少 OpenJDK 8。您可能需要在容器中安装 OpenJDK:/usr/lib/jvm/java-8-openjdk-amd64/bin/java
  • 也许您要克隆的映像在安装 OpenJDK 时存在问题?或者,JDK 的路径可能与您在入口点中使用的路径不同:/usr/lib/jvm/java-8-openjdk-amd64/bin/java。运行纯图像openjdk:8-jdk 并找出java 在哪里:ls /usr/lib/jvm

标签: java docker maven docker-compose dockerfile


【解决方案1】:

我认为图像中 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

【讨论】:

    【解决方案2】:

    修改旧的java站点

    到这里

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

    这是错误

    秒 我使用旧版本 docker 和 docker-compose 解决了这个问题

    修改版本:

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


    详细版本

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

    码头工人撰写

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

    1.16.1

    【讨论】:

      猜你喜欢
      • 2020-06-05
      • 2022-12-06
      • 1970-01-01
      • 1970-01-01
      • 2021-12-21
      • 1970-01-01
      • 1970-01-01
      • 2020-01-03
      • 2021-10-08
      相关资源
      最近更新 更多