【发布时间】:2019-05-17 18:16:31
【问题描述】:
我想在 Docker 映像中安装像 python 这样的 Alpine 包,但是当我运行 docker build - < Dockerfile(或使用 IntelliJ 构建)时,我得到了
ERROR: unsatisfiable constraints:
/bin/sh (virtual):
provided by: busybox
required by:
alpine-baselayout-3.1.0-r0[/bin/sh]
alpine-baselayout-3.1.0-r0[/bin/sh]
The command '/bin/sh -c apk add --update python' returned a non-zero code: 2
我正在使用以下 Dockerfile,它是从 github.com/gliderlabs/docker-alpine/blob/master/docs/usage.md 的文档中导出的
FROM gliderlabs/alpine:latest
RUN apk add --update python
交互使用 docker 镜像时出现同样的错误
当我使用docker run -it gliderlabs/alpine:latest /bin/sh 然后apk add --update python 或apk add python 我得到同样的错误。
当我执行apk update 时,我得到OK: 9543 distinct packages available,但是当我执行apk upgrade 时,我得到同样的错误。
系统信息
我使用的是 Arch Linux 4.19.8。
gliderlabs/alpine:latest 的 Image ID 是sha256:673b8178133a04ed1de21d6cf1a729f8aaf9469d4550005ede89e7142efd9459。
docker run gliderlabs/alpine:latest which apk 的输出是/sbin/apk。
docker 版本是 18.09.0-ce。
相关其他信息
Docker Alpine /bin/sh apk not found 看起来很相似(虽然在 CentOS 上)但没有分辨率,一条评论链接到:
/bin/sh: 1: apk: not found while creating docker image,但答案是切换到 apk,我已经这样做了(文档对此非常清楚)。
Docker: Using apt-key with alpine image 还建议使用apk add,这就是我正在做的事情。
编辑
按照@larsks 的建议,您可以运行apk search --update python | grep '^python',它显示我有python3-3.6.6-r0 可用,但没有python。但是,当我尝试 apk add python3-3.6.6-r0 时,我得到了
ERROR: unsatisfiable constraints:
python3-3.6.6-r0 (missing):
required by: world[python3-3.6.6-r0]
/bin/sh (virtual):
provided by: busybox
required by: alpine-baselayout-3.1.0-r0[/bin/sh] alpine-baselayout-3.1.0-r0[/bin/sh]
此外,这也无法解释为什么 apk upgrade 会失败并出现与 apk add python 相同的错误。
当我尝试apk add --update python3 时,我得到了
fetch http://alpine.gliderlabs.com/alpine/v3.8/main/x86_64/APKINDEX.tar.gz
fetch http://alpine.gliderlabs.com/alpine/v3.8/community/x86_64/APKINDEX.tar.gz
ERROR: unsatisfiable constraints:
/bin/sh (virtual):
provided by: busybox
required by: alpine-baselayout-3.1.0-r0[/bin/sh] alpine-baselayout-3.1.0-r0[/bin/sh]
【问题讨论】:
-
使用
alpine图像而不是gliderlabs/alpine。 -
@larsks 是的,这就是问题所在!