当正式的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。
答案 0 :(得分:0)
不同体系结构的图像配方都有自己的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'