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证书

Alpine linux安装docker

使用“exit”后如何保留docker alpine容器?

尝试自己建立以alpine 为基础的docker基础镜像和组件镜像

docker实例-alpine-nginx