Macbook Air M1 上的 DB2 docker

问题描述 投票:0回答:1

我按照官方说明在 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?

docker macos db2 apple-m1
1个回答
0
投票

Apple Silicon(在我的例子中是 Apple M3)的工作解决方案,带有用于 ibmcom/db2 映像的 Docker Desktop。

最重要的应用选项:

  1. 在 Docker Desktop 中,转到“设置”->“常规”-> 取消选择“在 Apple Silicon 上使用 Rosetta 进行 x86_64/amd64 模拟”
  2. 通过在控制台中运行命令来添加 ENV 变量 DOCKER_DEFAULT_PLATFORM=linux/amd64
    export DOCKER_DEFAULT_PLATFORM=linux/amd64
    或直接在容器启动命令之前添加它(如下例所示)
  3. 运行 docker 容器时使用
    --platform=linux/amd64
    设置
  4. 运行容器时使用
    --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

帮助我找到解决方案的旁注:

  • 记得在设置更改之间删除容器
  • 记住在设置更改之间删除音量
© www.soinside.com 2019 - 2024. All rights reserved.