随着正式的docker alpine仓库获得了多架构支持,如何在基础镜像中获取架构名称,尤其是在Dockerfile中?

https://github.com/docker-library/official-images#architectures-other-than-amd64

仅使系统为32位或64位是不够的。我希望结果与docker体系结构相同,例如arm32v7,arm64v8,amd64等。

我的目标是构建一个nodejs docker镜像。对于amd64,大多数依赖关系可直接获得,而对于其他一些体系结构,则需要从源代码进行编译,在这种情况下,需要额外的dep,如python,gcc / g++。我希望我的dockerfile中的脚本可以解决问题,并且仅在必要时才安装这些额外的dep。

最佳答案

不同架构的图像配方都有自己的Dockerfile,因此只需选择合适的Dockerfile(希望我对您的问题正确)。

有针对各种架构的Alpine可用节点图像,例如:
sudo docker pull ppc64le/node:8-alpine
是Alpine 3.8上PPC64LE的Node.js 8.12.0镜像。

澄清后编辑:

对于根据目标体系结构不同构建的多架构Dockerfile,您可以在运行时解析拱形名称,方法是检查uname -m的结果并使用shell条件,例如:

RUN /bin/ash -c 'set -ex && \
    ARCH=`uname -m` && \
    if [ "$ARCH" == "x86_64" ]; then \
       echo "x86_64" && \
       apk add some-package; \
    else \
       echo "unknown arch" && \
       apk add some-other-package; \
    fi'

关于linux - 如何在 Alpine Linux中获得docker体系结构,例如amd64,arm32v7?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52865729/

10-16 15:52