linux - macOS 中的 docker 在 amd64 上运行 arm64

标签 linux macos docker x86-64 arm64

在测试 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/

相关文章:

docker - 有没有办法从主机启动同级 docker 容器安装卷?

qt - CMake 在 Docker/Ubuntu 18.04 中找不到 Qt5LinguistTools

docker - 构建 jenkins docker 镜像时出错

c - 如何在 Linux 中立即捕获击键?

c++ - 如何在 C++ 中使用输入重定向来添加整数

objective-c - 不使用 NSView 进行打印

multithreading - 为什么performSelector是:onThread:withObject:waitUntilDone: not recommended for frequent inter-thread communication

在 Linux 中创建守护进程

linux - 在 bash 的特定行中删除换行符(将两行合并为一行)

macos - Vim copy to system clipboard using register 不工作(Mac 电脑)