【问题标题】:Docker Alpine /bin/sh apk not foundDocker Alpine /bin/sh apk 未找到
【发布时间】:2017-03-08 22:30:31
【问题描述】:

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

FROM alpine:3.4
RUN apk upgrade --update

但是,它因错误而失败:

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

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

【问题讨论】:

  • 你能检查docker images并检查alpine:3.4的ID吗?在新的 Docker 主机上,我得到 baa5d63471ea
  • 我可以确认 docker images 也为我返回 baa5d63471ea
  • 奇数。你从docker run alpine:3.4 which apk看到了什么
  • 我明白了 - /sbin/apk
  • 奇数。 docker version?

标签: docker alpine


【解决方案1】:

我遇到了这样的事情。这完全让我大吃一惊,我一度怀疑自己的理智,直到我意识到/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

【讨论】:

  • 正是我需要的,谢谢! /sbin 也不适合我。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2018-04-26
    • 2022-01-07
    • 2021-07-24
    • 1970-01-01
    • 2017-10-20
    • 2017-02-07
    • 1970-01-01
    • 1970-01-01
    • 2021-10-20
    相关资源
    最近更新 更多