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
中
我正在构建一个新的 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