Docker Alpine /bin/sh apk 未找到
Posted
技术标签:
【中文标题】Docker Alpine /bin/sh apk 未找到【英文标题】:Docker Alpine /bin/sh apk not found 【发布时间】: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
?
【参考方案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。到目前为止没有问题。
【讨论】:
以上是关于Docker Alpine /bin/sh apk 未找到的主要内容,如果未能解决你的问题,请参考以下文章
Docker:如何将 bash 与基于 Alpine 的 docker 映像一起使用?
Alpine Linux添加Let‘s Encrypt CA证书或者自签CA证书