【问题标题】:: starting container process caused "exec: \"sudo\": executable file not found:启动容器进程导致“exec:\”sudo\”:找不到可执行文件
【发布时间】:2017-06-20 16:13:22
【问题描述】:

ERROR:Cannot start service cpanel_client: invalid header field value "oci 运行时错误: container_linux.go:247: 启动容器进程导致 "exec: \"sudo\": 找不到可执行文件

这是我的 docker 文件,

FROM node:8.1.2-alpine

WORKDIR /control-panel
COPY package.json /control-panel/package.json
RUN npm install auth0-lock mapbox-gl mapbox-gl-geocoder tinymce angular2-jwt aws-sdk @angular/cli hammerjs jquery moment moment-timezone bootstrap@3 jquery-ui-dist --save
RUN mv /control-panel/node_modules /node_modules
COPY . /control-panel
EXPOSE 4200
EXPOSE 49153

这里是 docker compose.yml,

cpanel_client:
    build: .
    ports:
        - "4200:4200"
        - "49153:49153"
    volumes:
        - .:/control-panel
    command: npm start

我的 package.json 文件,

{
  "name": "cpanelcli",
  "version": "0.0.0",
  "license": "MIT",
  "angular-cli": {},
  "scripts": {
    "ng": "ng",
    "start": "ng serve --host 0.0.0.0",
    "lint": "tslint \"src/**/*.ts\"",
    "test": "ng test",
    "pree2e": "webdriver-manager update --standalone false --gecko false",
    "e2e": "protractor"
  },
  "private": true,
  "dependencies": {
    "@angular/common": "4.0.0",
    "@angular/compiler": "4.0.0",
    "@angular/core": "4.0.0",
    "@angular/forms": "4.0.0",
    "@angular/http": "4.0.0",
    "@angular/material": "^2.0.0-beta.2",
    "@angular/platform-browser": "4.0.0",
    "@angular/platform-browser-dynamic": "4.0.0",
    "@angular/router": "^3.3.1",
    "@types/jquery": "^2.0.46",
    "angular2-jwt": "^0.1.28",
    "aws-sdk": "^2.28.0",
    "bootstrap": "^3.3.7",
    "core-js": "^2.4.1",
    "hammerjs": "^2.0.8",
    "jquery": "^3.2.1",
    "jquery-ui-dist": "^1.12.1",
    "mapbox-gl": "^0.34.0",
    "mapbox-gl-geocoder": "^2.0.1",
    "mapbox.js": "^3.0.1",
    "ng2-datepicker": "^1.8.0",
    "rxjs": "^5.0.1",
    "tinymce": "^4.5.5",
    "ts-helpers": "^1.1.1",
    "zone.js": "^0.7.2"
  },
  "devDependencies": {
    "@angular/compiler-cli": "^2.3.1",
    "@types/jasmine": "2.5.38",
    "@types/node": "^6.0.42",
    "angular-cli": "1.0.0-beta.24",
    "codelyzer": "~2.0.0-beta.1",
    "jasmine-core": "2.5.2",
    "jasmine-spec-reporter": "2.5.0",
    "karma": "1.2.0",
    "karma-chrome-launcher": "^2.0.0",
    "karma-cli": "^1.0.1",
    "karma-jasmine": "^1.0.2",
    "karma-remap-istanbul": "^0.2.1",
    "protractor": "~4.0.13",
    "ts-node": "1.2.1",
    "tslint": "^4.0.2",
    "typescript": "~2.0.3"
  }
}

构建成功。当我运行docker-compose run –rm cpanel_client ng init –skip-npm –name CliDemo 时出现此错误。 谁能告诉我哪里错了?

【问题讨论】:

  • 这意味着您的npm start 中出现了问题,同时发布了失败容器的docker logs
  • 你能发布你的 package.json 吗?
  • 我发布了我的 package.json 文件
  • 您的服务名称是“cpanel_client”还是“cpanel”?您的 compose.yml 显示“cpanel_client”,您的运行命令显示“client”
  • 我更新了我的帖子。

标签: docker docker-compose


【解决方案1】:

node_modules/.bin 文件夹默认不在$PATH 中。你只需要直接调用路径:

command: /control-panel/node_modules/.bin/ng serve --host 0.0.0.0

【讨论】:

  • 我不明白。
  • 对不起。您要解决的问题将涉及 Linux 和环境的一些基本知识。
  • 我更改了路径,但仍然无法正常工作。 dockerfile 和 docker compose 已经发布了
  • 我已经有一个正在运行的容器,其中包含我发布的脚本。现在的问题是当我在另一台机器上运行它时。
【解决方案2】:

您的映像上似乎没有安装sudo。注意错误信息:

"exec: \"sudo\": executable file not found

某事试图 sudo(“超级用户做”)某事,但不能。尝试通过包管理器安装sudo 以安抚该步骤,或尝试将该步骤配置为不需要超级用户权限。

【讨论】:

  • 我尝试在没有 sudo 的情况下运行。错误是一样的。 "exec: \\\"ng\\\": $PATH\"\n"中找不到可执行文件
  • 嗯,这似乎很简单,再次。您可以在您尝试运行的上下文中检查您的 $PATH,或者您可以将对 ng 的引用从依赖 $PATH 解析更改为显式路径。我没有用过那个包,但它可能在某个地方,比如./node_modules/angular-cli/bin/ng - 你应该在图片上仔细检查一下。
  • package.json 中的这一行 "start": "ng serve --host 0.0.0.0", 依赖于 shell 知道 ng 在哪里,它似乎不知道。将其更改为 "start": "./node_modules/angular-cli/bin/ng serve --host 0.0.0.0", 之类的东西(再次,请在实际安装时仔细检查该路径)将使其明确知道在哪里可以找到 ng。
  • 我已经发布了我的 dockerfile 和 docker-compose 。你能运行并纠正它吗?
  • 越来越清楚的是,我无法为您提供任何帮助来帮助您克服这个问题。祝你好运,我希望你有一天能找到一些求知欲。
猜你喜欢
  • 2020-01-15
  • 1970-01-01
  • 1970-01-01
  • 2021-04-23
  • 2018-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-07
相关资源
最近更新 更多