在测试 vault 的特定版本时macOS 上的项目(版本 10.13.6
),使用 Docker 18.06.10-ce-mac73
我创建了这个 Dockerfile:
FROM ubuntu
RUN apt-get update && apt-get install -y --no-install-recommends -q curl build-essential ca-certificates git net-tools netcat unzip jq
WORKDIR /vault
RUN mkdir -p /vault/bin && \
cd /vault/bin && \
curl -o vault.zip -sL https://releases.hashicorp.com/vault/0.9.0/vault_0.9.0_linux_arm64.zip && unzip vault.zip
ENV PATH="/vault/bin:${PATH}"
ENTRYPOINT /bin/bash
容器出现了,我可以使用它并运行所有必需的测试,我唯一注意到的是在所有命令输出之前,我得到了这样的东西:
root@d2abe7afe964:/vault/bin# vault --version
Unknown host QEMU_IFLA type: 40
Unknown host QEMU_IFLA type: 41
Unknown host QEMU_IFLA type: 40
Unknown host QEMU_IFLA type: 41
Unknown QEMU_IFLA_INFO_KIND ipip
Unknown host QEMU_IFLA type: 40
Unknown host QEMU_IFLA type: 41
Unknown QEMU_IFLA_INFO_KIND ip6tnl
Unknown host QEMU_IFLA type: 40
Unknown host QEMU_IFLA type: 41
Vault v0.9.0 ('bdac1854478538052ba5b7ec9a9ec688d35a3335')
一位使用 Linux(Ubuntu) 的同事无法运行 vault
命令,他得到的错误是:
exec error command failed
在详细检查之后,问题是 Dockerfile 使用了 vault_0.9.0_linux_arm64.zip
而不是 vault_0.9.0_linux_amd64.zip
.错误地使用了 arm64
的二进制文件而不是所需的 amd64
令我们惊讶的是在 macOS 环境中工作。
因此想更详细地了解为什么会发生这种情况,以及是否有办法在需要时以“严格”或更“像”Linux 运行容器?
最佳答案
因为MacOS(你的机器)上的Docker自带Linux虚拟机(Docker容器需要Linux内核的一些特性才能运行,所以不能单独在MacOS上运行)。该 Linux VM 已配置 QEMU 和 binfmt_misc,因此它可以运行 arm64 容器。同时,您 friend 的机器在他的本地 Linux 上运行 Docker(不是通过 VM),而他的 Linux 配置不足以运行 arm64 容器。
关于linux - macOS 中的 docker 在 amd64 上运行 arm64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52098211/