首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >下面两个对接命令的区别是什么?

下面两个对接命令的区别是什么?
EN

Stack Overflow用户
提问于 2022-10-10 05:42:02
回答 1查看 73关注 0票数 2

我正在尝试在docker项目中使用MacBook M1,这个项目依赖于lib confluent-kafka-go,因此必须使用以下方式。

两种方法都有效,但有什么区别呢?

我看到的是,第一个使用多平台图像,第二个使用特殊的amd64/golang图像.

代码语言:javascript
复制
docker run --platform linux/amd64 --rm -v $PWD:/build -w /build -e GOOS=linux -e GOARCH=amd64 golang:1.17-buster go build
代码语言:javascript
复制
docker run --rm -v "$PWD":/build -w /build -e GOOS=linux -e GOARCH=amd64 amd64/golang:1.17 go build
EN

回答 1

Stack Overflow用户

发布于 2022-10-10 06:25:44

这就是““共享”和“简单”标记”之间的区别:

  • “简单标记”是“单一”Linux或Windows映像的实例。 它通常是一个清单列表,可以包含为其他体系结构构建的相同映像;例如,mongo:4.0-xenial当前有用于amd64和arm64v8的映像。 Docker守护进程负责为主机体系结构选择适当的映像。
  • “共享标记”是指一个清单列表,其中包括Windows和Linux图像在各自的体系结构中的一些组合--在mongo示例中,4.0标记是一个共享标记,包括(在撰写本文时)所有4.0--异种、4.0-windowsservercore ltsc2016、4.0-windowsservercore-1709和4.0-windowsservercore-1803。

所以:

  • “简单标记”使docker run mongo:4.0-xenial能够在单个平台上跨体系结构“做正确的事情”(Linux在mongo:4.0中是异种的)。
  • “共享标记”使mongo:4.0能够在Linux上和支持的许多不同版本的Windows上大致运行(如Windows 2016,其中docker守护进程再次负责根据主机平台和版本确定适当的映像)。

在您的例子中,码头格朗形象提供了两个标记

  • golang:1.17-buster是一个共享标记,您将从其中通过--platform选项提取linux/amd64。 如果您没有指定平台,将收到如下警告: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm/v7) and no specific platform was requested
  • amd64/golang:1.17是一个简单的标记,已经为linux/amd64量身定做
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74010617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档