aGu*_*egu 6 linux docker dockerfile alpine-linux
由于官方的 docker alpine 存储库获得了多架构支持,我如何获取基础镜像中的架构名称,特别是 Dockerfile 中的架构名称?
https://github.com/docker-library/official-images#architectures-other-than-amd64
仅获取系统是 32 位或 64 位是不够的。我更喜欢结果与 docker 架构相同,如 arm32v7、arm64v8、amd64 等。
我的目标是构建一个nodejs docker 镜像。对于amd64,大多数依赖项都可以直接使用,而对于其他一些架构,它们需要从源代码编译,在这种情况下需要额外的依赖项,例如python,gcc/g++。我希望 dockerfile 中的脚本能够解决这个问题,并且仅在必要时才安装这些额外的依赖项。
不同架构的镜像配方有自己的 Dockerfile,因此只需选择合适的 Dockerfile(希望我正确回答了您的问题)。
Alpine 有针对各种架构的可用节点映像,例如:
docker pull ppc64le/node:8-alpine
是 Alpine 3.8 上 PPC64LE 的 Node.js 8.12.0 镜像。
澄清后编辑:
对于根据目标架构构建不同的多架构 Dockerfile,您可以通过检查 shell 条件的结果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'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23351 次 |
| 最近记录: |