Docker 高山 /bin/sh 未找到 apk

Docker Alpine /bin/sh apk not found

我正在构建一个新的 Docker 图像:

FROM alpine:3.4
RUN apk upgrade --update

但是,它因错误而失败:

[INFO] /bin/sh: apk: not found

这似乎在我的本地机器上运行良好 (Mac OSX) 但是当我尝试在 Linux CentOS 7 机器上构建它时它失败了。

最后,我们升级了项目以使用此 Docker Maven 插件:https://github.com/fabric8io/fabric8-maven-plugin。到目前为止没有问题。

我运行喜欢这样的东西。这完全让我大吃一惊,我开始怀疑自己的理智,直到我意识到 /sbin 不在我容器的 PATH.

# interactive session
PATH="${PATH}:/sbin"

# Dockerfile
ENV PATH="${PATH}:/sbin"

如果您在容器基本映像的交互式会话中键入 command -v apk 并将该目录与容器的 $PATH 进行比较,这应该会让您大吃一惊。

如果 command -v apk 对您不起作用,您可以尝试 find 通过

find / -name apk -type f -exec dirname "{}" ";"

据我所知,这总是在 /sbin 中。无论您到达那里,只需确保 apk 二进制文件的位置是 $PATH

的一部分

TL;DR - 如果您看到此错误,请确保您的可执行文件 dirname 在您的 $PATH