這件事情大概試了有一個月以上,每個週末花時間研究,但怎麼弄就是弄不起來。
一開始依照官方文件:https://www.ibm.com/docs/en/db2/12.1.x?topic=system-macos 操作,容器在啟動過程當中,無論是在 ARM 或者是 x86 環境,都會遇到一大堆路徑權限不足的錯誤,最終就是無法正常啟動 Db2 Community Edition Image。
期間上網查了很多資料,還有國外的網友建議搭配 Lima 與 Podman 來執行,曾經一度有正常啟動,但因為沒辦法順利地反覆停止再啟動 container 所以放棄…
最近終於用以下的執行命令,順利的使用 podman 啟動 Db2 Community Edition Image:
podman run -h db2server --name db2server --detach --privileged=true \
-p 50000:50000 --env-file .env_list -v /Users/marksu/db2-container:/database icr.io/db2_community/db2
本來以為是 Db2 Community Edition Image 版本更新到 12.1.3.0 的關係,也就是說本來是在懷疑 12.1.2.0 這個版本有問題,所以又再回過頭去測了 12.1.2.0 這個版本,結果也可以順利的啟動,所以不禁懷疑問題應該是出在 macOS 版本,或者是 Podman 的版本了。
目前上面這個命令,可以在 macOS 26.1 + Podman 5.7.0 這樣的配置成功啟動 Db2 Community Edition Image;不過命令的部分與官方文件有些出入,做以下說明:
首先,我在 /Users/marksu 路徑下建立了 db2-container 這個目錄,並且在 db2-container 這個目錄下建立了 .env_list 檔案,內容如下:
LICENSE=accept
DB2INSTANCE=db2inst1
DB2INST1_PASSWORD=password
DBNAME=testdb
BLU=false
ENABLE_ORACLE_COMPATIBILITY=false
UPDATEAVAIL=NO
TO_CREATE_SAMPLEDB=false
REPODB=false
IS_OSXFS=true
PERSISTENT_HOME=false
HADR_ENABLED=false
ETCD_ENDPOINT=
ETCD_USERNAME=
ETCD_PASSWORD=
與官方文件最主要的差別在,我將 PERSISTENT_HOME 設定為 false;雖然官方文件說這個設定預設為 true,並且應該只有在使用 Docker 執行,並且環境是 Windows 的時候才需要改為 false。
不過實際測試,如果 PERSISTENT_HOME 設定為 true,第一次啟動 Db2 Community Edition Image 是沒有問題的,但是如果將 Db2 container 停止再啟動的話,就會發生錯誤無法正確啟動完成;但是 PERSISTENT_HOME 設定為 false 後,就沒有這樣的問題了。
透過 Extension Studio 的 IBM DB2 Support VS Code extension,就可以成功連線到 Db2 Community Edition Image 裡的 testdb 資料庫了;IBM 出的 Db2 Connect VS Code extension 已經一年沒有更新,且不支援 ARM 的 macOS,所以也派不上用場了。





Add comment