首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >standard_init_linux.go:190: exec用户进程导致“没有这样的文件或目录”- Docker

standard_init_linux.go:190: exec用户进程导致“没有这样的文件或目录”- Docker
EN

Stack Overflow用户
提问于 2018-07-24 22:03:22
回答 26查看 266.6K关注 0票数 276

当我在windows 10上运行我的码头映像时,我得到了以下错误:

代码语言:javascript
复制
standard_init_linux.go:190: exec user process caused "no such file or directory"

我的码头文件是:

代码语言:javascript
复制
FROM openjdk:8

EXPOSE 8080

VOLUME /tmp

ADD appagent.tar.gz /opt/app-agent
ADD services.jar app.jar
ADD run.sh /run.sh

# Install compiler and perl stuff
RUN apt-get update
RUN apt-get install -y build-essential
RUN apt-get install -y gcc-multilib
RUN apt-get install -y perl

# Install Percona Toolkit
RUN apt-get install --yes percona-toolkit
RUN ["chmod", "+x", "/run.sh"]
ENTRYPOINT ["/run.sh"]

脚本从#!/bin/sh开始

代码语言:javascript
复制
#!/bin/sh
set -e

JAVA_OPTS="-Dfile.encoding=UTF-8 -Djava.security.egd=file:/dev/urandom"

if [ "${APPD_APP_NAME}" != "" ]; then
JAVA_AGENT="-javaagent:/opt/app-agent/javaagent.jar
fi

exec java ${JVM_OPTS} ${JAVA_OPTS} ${JAVA_AGENT} -jar /app.jar

尝试method1:尝试将#!/bin/sh更改为#!/bin/bash,但得到了相同的错误。

尝试method2:在停靠文件中添加dos2unix

代码语言:javascript
复制
RUN apt-get install -y dos2unix
RUN dos2unix /run.sh
EN

回答 26

Stack Overflow用户

回答已采纳

发布于 2018-10-05 12:30:12

使用notepad++,转到编辑-> EOL转换->从CRLF到LF。

更新:对于VScode用户:您可以通过单击状态栏右下角的CRLF将CRLF更改为LF。

票数 487
EN

Stack Overflow用户

发布于 2019-06-10 15:00:00

在使用alpine映像时,我也遇到了同样的问题。

我的.sh文件有以下第一行:

代码语言:javascript
复制
#!/bin/bash

阿尔卑斯山没有巴什。所以把行改为

代码语言:javascript
复制
#!/bin/sh

或安装bash

代码语言:javascript
复制
apk add --no-cache bash

帮我解决了这个问题。

票数 144
EN

Stack Overflow用户

发布于 2018-08-07 05:29:44

更改入口点如下。对我来说很管用

代码语言:javascript
复制
ENTRYPOINT ["sh","/run.sh"]

正如在评论中所指出的,医生们需要第一个参数作为可执行文件:

入口点有两种形式: ENTRYPOINT ["executable", "param1", "param2"] (exec,首选) ENTRYPOINT command param1 param2 (外壳形式)

票数 134
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51508150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档