我按照官方说明在 docker 中运行 DB2。我已经在 macOS Intel 上成功完成了无数次。我也在 Windows 10 中成功完成了此操作。但现在我尝试在 macOS Apple 芯片(Macbook Air M1)中执行此操作。我通过将
--platform linux/amd64
选项添加到 docker pull
和 docker run
来实现此目的。
这样容器就创建好了。但是 DB2 会出现各种各样的问题。首先,DB2 似乎没有启动。我手动运行
db2start
来解决这个问题。然后我在创建数据库并连接到它时遇到了麻烦。我收到这条消息:
SQL1031N The database directory cannot be found on the indicated file system
查看
db2diag.log
没有显示任何特定的错误消息。
我需要做什么才能在Apple硅胶中的docker中运行DB2?
Apple Silicon(在我的例子中是 Apple M3)的工作解决方案,带有用于 ibmcom/db2 映像的 Docker Desktop。
最重要的应用选项:
export DOCKER_DEFAULT_PLATFORM=linux/amd64
或直接在容器启动命令之前添加它(如下例所示)--platform=linux/amd64
设置--privileged=true
设置,否则 db2 无法运行启动脚本运行容器:
export DOCKER_DEFAULT_PLATFORM=linux/amd64 && docker run -it --name db2 -e DBNAME=test -e DB2INST1_PASSWORD=testpwd -e LICENSE=accept -p 50000:50000 --privileged=true --platform=linux/amd64 ibmcom/db2
与 docker-compose.yml 一起使用的第二种解决方案:
version: '3.8'
services:
db2:
image: ibmcom/db2
platform: linux/amd64
privileged: true
environment:
- LICENSE=accept
- DB2INST1_PASSWORD=testpwd
- DBNAME=test
ports:
- "50000:50000"
container_name: db2
使用 docker-compose 运行:
export DOCKER_DEFAULT_PLATFORM=linux/amd64 && docker-compose up
要通过数据库客户端(例如 Dbeaver)登录,请使用以下连接设置:
host: localhost
port: 50000
user: db2inst1
password: testpwd
database: test
帮助我找到解决方案的旁注: