【问题标题】:Command not found in docker when install with chmod使用 chmod 安装时在 docker 中找不到命令
【发布时间】:2021-06-30 01:17:13
【问题描述】:

我正在用 R 编写一个 Docker 容器。对于 dockerfile 组合,我使用 VScode 及其扩展。目前我可以完全按照我的意愿运行容器,但是,当我将 dockerfile 推送到 Github 并从那里触发 dockerhub 中的构建时,我注意到以下问题:

Dockerfile:

FROM nvidia/cuda:11.2.2-base-ubuntu20.04

# Install dependencies
RUN apt-get update && apt-get install -y \
    curl \
    ca-certificates \
    dumb-init \
    htop \
    sudo \
    gcc \
    bzip2 \
    libx11-6 \
    locales \
    man \
    git \
    procps \
    openssh-client \
    lsb-release \
  && rm -rf /var/lib/apt/lists/*

COPY installers /installers
COPY entrypoint.sh /usr/bin/entrypoint.sh

RUN /installers/install_R.sh

COPY run_simple.sh /usr/run_simple.sh

CMD ["bash","/usr/run_simple.sh"]

错误:

...
...
[91m/bin/sh: 1: /installers/install_R.sh: Permission denied
[0m
Removing intermediate container 1ea9ba9d9d2b
The command '/bin/sh -c /installers/install_R.sh' returned a non-zero code: 126

显然,构建器无法访问复制的文件。所以,如果我以RUN chmod +x /installers/install_R.sh 运行该文件,那么就没有安装问题。但是,当我启动容器时,我看不到任何地方 R,就好像它不会安装一样。这让我觉得它可以为其他用户安装?或者对于与运行容器的用户不同的用户?或者根本没有安装?

如果您能帮我解决这个问题,我们将不胜感激。

【问题讨论】:

  • 你是如何启动容器的?如果您按照您的描述运行chmod,您如何验证安装是否符合您的预期?您的应用程序如何使用 sudohtopman(或者您可以安全地从映像中删除这些包)?
  • 1- 当我使用 chmod 时,我没有完全“验证”安装了东西。我只知道图像构建与存在chmod 命令的dockerfile 一起工作。如果我运行交互式会话,我找不到带有whereis xxx 的 bin。 2- 当我构建图像时,我从github.com/rocker-org/rocker-versioned2/tree/master/dockerfiles 中提取了一些部分。我不知道哪些是完全必需的,但其中大部分已经存在于模板中。

标签: docker ubuntu chmod


【解决方案1】:

原因可能是文件最初提交到 Github 时没有执行权限。因此,当您在本地对其进行测试时,执行权限在那里它可以工作,但是在新的克隆上它将无法工作

为此您需要在下面使用

Updating and committing only a file's permissions using git version control

还有一个更好的方法是使用以下类型的RUN 语句

RUN sh /installers/install_R.sh

RUN chmod +x /installers/install_R.sh && /installers/install_R.sh

【讨论】:

  • 我可能做错了什么,因为我试过了,但它并没有改变任何东西。我的 git/.config 文件看起来像:[core] repositoryformatversion = 0 filemode = true 不过,如果我将图像推送到 dockerhub 预构建它可以工作,但是当我将 dockerfile 推送到 github 并在 dockerhub 中编写时。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-17
  • 1970-01-01
  • 2021-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多