繁体   English   中英

在amd64上运行arm64的macOS中的docker

[英]docker in macOS running arm64 on amd64

在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“类似”中运行容器?

因为MacOS上的Docker(你的机器)附带了一个Linux虚拟机(Docker容器需要运行Linux内核的一些功能,所以它不能单独在MacOS上运行)。 Linux VM已经配置了QEMU和binfmt_misc,因此可以运行arm64容器。 同时,你的朋友机器在他的原生Linux上运行Docker(而不是通过VM),并且他的Linux配置不足以运行arm64容器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM