上个月我花了相当多的时间试图弄清楚如何在我的 Mac Pro M2 Max 上以 x86_64 运行 colima 和 docker 引擎。
一切都来自 dockerfile-maven-plugin 版本 1.4.13 缺少的兼容架构(只有“i386,x86_64”),如下所述:text,text和text
这个插件目前是硬编码的,我无法将其更改为任何其他插件。在公司我们使用x86_64 cpu arch PC。但相反,当我尝试使用上述插件构建图像时,我想使用我的 Mack Book 来实现此目的
我尝试过以下方法
场景一:
我已经安装了homebrew,然后安装了:colima 和 docker 之后,我使用这个参数 --arch x86_64 启动 colima,一旦我 ssh 到虚拟机,我可以看到它采用 x86_64 架构。到目前为止一切顺利,但我坚持以相同的架构启动 docker 引擎。它默认以 darwin/arm64 启动
场景2:
我已经卸载了arm64的Homebrew并安装了rosetta。之后,我继续安装 x86_64 Homebrew: arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
然后我将 docker 引擎安装为: arch -x86_64 /usr/local/bin/brew install docker ,这样,它就以 darwin/amd64 (rosetta) 启动,这就是我想要实现的目标。我也以同样的方式安装了 colima (arch -x86_64 /usr/local/bin/brew install colima)。但是......当我尝试启动 colima 时,我收到此错误消息:
FATA[0000] limactl is running under rosetta, please reinstall lima with native arch
FATA[0000] lima compatibility error: error checking Lima version: exit status 1
即使这个文字也没有多大帮助。
一种解决方案可能是运行适用于arm64 arch的Homebrew的本机安装,一旦我使用--arch x86_64启动colima,就可以在VM内安装docker引擎(默认情况下有Ubuntu操作系统)。在虚拟机内部,我可以将配置添加为 /etc/docker/daemon.json 并在里面放置:
{"hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]}
。稍后,我将确保将 =tcp://localhost:2375 env 变量添加到我的例如中MacOS 上的 .zshrc 文件并获取它。
通过这种方式,我将在虚拟机内运行 docker 引擎,该引擎将暴露给我的 Mac 终端,并且我可以运行我的构建。
还有其他人获取类似问题或有更好的解决方案吗?
一切都来自 dockerfile-maven-plugin 版本 1.4.13 缺少的兼容架构(只有“i386,x86_64”),如下所述:文本,文本和文本
这个插件目前是硬编码的,我无法将其更改为任何其他插件。在公司我们使用x86_64 cpu arch PC。但相反,当我尝试使用上述插件构建图像时,我想使用我的 Mack Book 来实现此目的
您可以在 pom 文件中覆盖依赖项:
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.6</version>
<dependencies>
<dependency>
<groupId>com.github.jnr</groupId>
<artifactId>jnr-unixsocket</artifactId>
<version>0.38.14</version>
</dependency>
</dependencies>
</plugin>
更多详情请参阅。 https://stackoverflow.com/a/74602916/1810962
我已经安装了自制程序,然后安装了:colima 和 docker 之后,我使用这个参数 --arch x86_64 启动 colima,一旦我 ssh 到虚拟机,我可以看到它具有 x86_64 架构。到目前为止一切顺利,但我坚持以相同的架构启动 docker 引擎。它默认以 darwin/arm64 启动
我看不懂这篇文章。 VM 应运行 x86_64,以便 docker 引擎将使用它。您是否覆盖了 docker 平台环境变量,例如:
export DOCKER_DEFAULT_PLATFORM=linux/arm64
如果是这样,请摆脱它。