【发布时间】:2019-02-05 11:14:44
【问题描述】:
在 macOS (version 10.13.6) 上测试特定版本的 vault 项目时,我使用 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“类似”的方式运行容器?
【问题讨论】:
-
您可能对
binfmt和qemu-arm-static感兴趣。基本上,您可以通过 binfmt_musc 将 arm64 二进制文件自动运行到 qemu-arm-static 之类的模拟器并运行它。
标签: linux macos docker x86-64 arm64