找不到Docker Alpine/bin/sh apk

Mik*_*loy 12 docker alpine-linux

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

FROM alpine:3.4
RUN apk upgrade --update
Run Code Online (Sandbox Code Playgroud)

然而,它失败了错误:

[INFO] /bin/sh: apk: not found
Run Code Online (Sandbox Code Playgroud)

这似乎在我的本地机器(Mac OSX)上正常工作,但是当我尝试在Linux CentOS 7机器上构建它时它失败了.

Rob*_*t J 6

我遇到了这样的事情。这完全让我大吃一惊,我怀疑自己的理智有一段时间,直到我意识到那/sbin不在我的容器中PATH

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

# Dockerfile
ENV PATH="${PATH}:/sbin"
Run Code Online (Sandbox Code Playgroud)

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

如果command -v apk不适合你,你可以尝试find通过

find / -name apk -type f -exec dirname "{}" ";"
Run Code Online (Sandbox Code Playgroud)

据我所知,这始终在/sbin. 无论你如何到达那里,只要确保apk二进制文件的位置是$PATH

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


Mik*_*loy 1

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