問(wèn)題:Flink CDC用例中的 docker 鏡像都是 X86 結(jié)構(gòu)垢啼,在 M1 芯片上無(wú)法運(yùn)行,所以需要解決的問(wèn)題,就是在 M1 芯片上運(yùn)行 X86 的鏡像
解決思路
根據(jù) https://github.com/marcelo-ochoa/oci-oracle-free/tree/19c-arm-slim 中提到的,可以使用 colima 安裝虛擬機(jī)環(huán)境的方式使用 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
跳轉(zhuǎn)到 https://github.com/abiosoft/colima#installation, 需要先卸載當(dāng)前環(huán)境的 docker-desktop 版本启具,然后使用命令安裝 colima
brew install colima
brew install docker
brew install docker-compose
接下來(lái)使用 colima 創(chuàng)建一個(gè) X86 的虛擬環(huán)境
colima start --arch x86_64 --memory 4
查看 docker 運(yùn)行在哪個(gè)環(huán)境
# 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
啟動(dòng) colima 后,會(huì)自動(dòng)選擇 colima 的環(huán)境珊泳。 我們復(fù)制 DOCKER ENDPOINT 的內(nèi)容
在環(huán)境變量中添加這些參數(shù)
TESTCONTAINERS_RYUK_DISABLED=true;TESTCONTAINERS_DOCKER_CLIENT_STRATEGY=org.testcontainers.dockerclient.EnvironmentAndSystemPropertyClientProviderStrategy;DOCKER_HOST=unix:///Users/yourname/.colima/default/docker.sock
參數(shù)介紹
-
TESTCONTAINERS_RYUK_DISABLED=true
關(guān)閉 RYUK 容器富纸,這個(gè)容器會(huì)使用默認(rèn)的 Docker (unix:///var/run/docker.sock)去清理其他容器囤踩,但是我們的 unix:///var/run/docker.sock 不生效,所以需要關(guān)閉晓褪。 -
TESTCONTAINERS_DOCKER_CLIENT_STRATEGY=org.testcontainers.dockerclient.EnvironmentAndSystemPropertyClientProviderStrategy
使用EnvironmentAndSystemPropertyClientProviderStrategy
替換默認(rèn)的UnixSocketClientProviderStrategy
堵漱, 默認(rèn)的UnixSocketClientProviderStrategy
加載的是 unix:///var/run/docker.sock, 而EnvironmentAndSystemPropertyClientProviderStrategy
可以通過(guò)配置環(huán)境變量選擇自定義的 docker。 -
DOCKER_HOST=unix:///Users/yourname/.colima/default/docker.sock
配置自定義的 docker 地址涣仿,和上面的EnvironmentAndSystemPropertyClientProviderStrategy
一起使用勤庐。