问题: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 upx86_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
一起使用。