linux - 如何在 alpine linux 中获取 docker 架构,如 amd64、arm32v7?

标签 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 中的脚本可以解决这个问题,并且仅在必要时才安装这些额外的 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/

相关文章:

mysql - docker-compose mysql 容器拒绝访问 wordpress 容器

bash - Bash Heredoc似乎不适用于Docker RUN语句

r - 向仓库文件添加仓库

linux - 'N' 和 'D' 无法按预期使用 sed

linux - 构建 Guest Additions 时 CentOS "Kernel configuration is invalid"错误

docker - 为什么我的Docker容器中的/etc/hosts文件为空?

ubuntu - 在 Docker 中,apt-get install 失败并出现 "Failed to fetch http://archive.ubuntu.com/... 404 Not Found"错误。为什么?我们怎样才能过去呢?

c - SDL 未检测到 Linux 或 Windows 上的 xbox Controller

c - 带有 SIOCSIFFLAGS 的 setsockopt 和 ioctl 有什么区别?

oracle - ORA-01034 : ORACLE not available