在 M1 芯片的 MackBook 运行 Flink CDC 测试用例

问题:Flink CDC用例中的 docker 镜像都是 X86 结构,在 M1 芯片上无法运行,所以需要解决的问题,就是在 M1 芯片上运行 X86 的镜像

解决思路

根据 https://github.com/marcelo-ochoa/oci-oracle-free/tree/19c-arm-slim 中提到的,可以使用 colima 安装虚拟机环境的方式使用 X86 镜像

Currently, there is no Oracle Database port for ARM chips, hence Oracle Database Free images cannot run on the new Apple M chips via Docker Desktop.
Fortunately, there are other technologies that can spin up x86_64 software on Apple M chips, such as colima. To run these Oracle Database Free images on Apple M hardware, follow these simple steps:

  • Install colima (instructions)
  • Run colima start --arch x86_64 --memory 4
  • Start container as usual

跳转到 https://github.com/abiosoft/colima#installation, 需要先卸载当前环境的 docker-desktop 版本,然后使用命令安装 colima

brew install colima
brew install docker 
brew install docker-compose

接下来使用 colima 创建一个 X86 的虚拟环境

colima start --arch x86_64 --memory 4

查看 docker 运行在哪个环境

# docker context list
NAME       DESCRIPTION                               DOCKER ENDPOINT                                       ERROR
colima *   colima                                    unix:///Users/yourname/.colima/default/docker.sock
default    Current DOCKER_HOST based configuration   unix:///var/run/docker.sock

启动 colima 后,会自动选择 colima 的环境。 我们复制 DOCKER ENDPOINT 的内容

在环境变量中添加这些参数

TESTCONTAINERS_RYUK_DISABLED=true;TESTCONTAINERS_DOCKER_CLIENT_STRATEGY=org.testcontainers.dockerclient.EnvironmentAndSystemPropertyClientProviderStrategy;DOCKER_HOST=unix:///Users/yourname/.colima/default/docker.sock

参数介绍

  • TESTCONTAINERS_RYUK_DISABLED=true 关闭 RYUK 容器,这个容器会使用默认的 Docker (unix:///var/run/docker.sock)去清理其他容器,但是我们的 unix:///var/run/docker.sock 不生效,所以需要关闭。
  • TESTCONTAINERS_DOCKER_CLIENT_STRATEGY=org.testcontainers.dockerclient.EnvironmentAndSystemPropertyClientProviderStrategy 使用 EnvironmentAndSystemPropertyClientProviderStrategy 替换默认的 UnixSocketClientProviderStrategy, 默认的 UnixSocketClientProviderStrategy 加载的是 unix:///var/run/docker.sock, 而 EnvironmentAndSystemPropertyClientProviderStrategy 可以通过配置环境变量选择自定义的 docker。
  • DOCKER_HOST=unix:///Users/yourname/.colima/default/docker.sock 配置自定义的 docker 地址,和上面的 EnvironmentAndSystemPropertyClientProviderStrategy 一起使用。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容