/bin/sh: find: 在 rockylinux:8 的 dockerfile 中找不到命令

Div*_*ank -2 docker dockerfile

我在 os: 中创建了 dockerfile rockylinux:8。出现错误:/bin/sh: find: command not found

Dockerfile:

FROM rockylinux:8 AS builder

RUN mkdir /usr/share/dashboards
WORKDIR /usr/share/dashboards
RUN find /usr/share/dashboards
Run Code Online (Sandbox Code Playgroud)

错误-

/bin/sh: find: command not found
The command '/bin/sh -c find /usr/share/dashboards' returned a non-zero code: 127
Run Code Online (Sandbox Code Playgroud)

joa*_*nis 5

find命令不包含在基本 rockylinux 映像中,您必须安装该findutils软件包才能使用它。

我刚刚测试过,这有效:

FROM rockylinux:8 AS builder

RUN yum install -y findutils
WORKDIR /usr/share/dashboards
RUN find /usr/share/dashboards
Run Code Online (Sandbox Code Playgroud)

现在,最佳实践是在构建开始时更新映像,以便获得最新的软件包和安全补丁,所以我实际上会这样做:

FROM rockylinux:8 AS builder

RUN yum -y update
RUN yum install -y findutils
WORKDIR /usr/share/dashboards
RUN find /usr/share/dashboards
Run Code Online (Sandbox Code Playgroud)

稍后您可以通过将两个 yum 命令放在同一个 RUN 指令中来优化它,也许还可以清理缓存,但这应该足以让您开始。

PS:在他们的编辑中,@DavidMaze 指出mkdirDockerfile 中的行是多余的,因为WORKDIR指令已经创建了目录。