ibmcom/db2 docker映像在m1上失败

wztqucjr  于 2022-11-07  发布在  DB2
关注(0)|答案(2)|浏览(321)

我在我的M1-Max MacBook Pro(32 GB RAM)上通过Docker在macOS上设置DB2时遇到了麻烦。我已经看了一下this question,它可能是相关的,但是没有太多的信息,我不能确切地说,如果它是关于完全相同的事情。我设置了以下docker-compose.yml:

version: '3.8'

services:
  db2:
    image: ibmcom/db2
    platform: linux/amd64
    container_name: db2-test
    privileged: true
    environment:
      LICENSE: "accept"
      DB2INSTANCE: "db2dude"
      DB2INST1_PASSWORD: "db2pw"
      DBNAME: "RC1DBA"
      BLU: "false"
      ENABLE_ORACLE_COMPATIBILITY: "false"
      UPDATEVAIL: "NO"
      TO_CREATE_SAMPLEDB: "false"
      REPODB: "false"
      IS_OSXFS: "true"
      PERSISTENT_HOME: "true"
      HADR_ENABLED: "false"
      ETCD_ENDPOINT: ""
      ETCD_USERNAME: ""
      ETCD_PASSWORD: ""
    volumes: 
       - ~/workspace/docker/db2-error/db2/database:/database
       - ~/workspace/docker/db2-error/db2/db2_data:/db2_data
    ports:
      - 50000:50000

在我的Intel-MacBook上,这旋转起来没有任何问题,在我的M1-MacBook上,但是我看到Task #4完成后,我看到STDOUT内的以下部分:

DBI1446I  The db2icrt command is running.

DBI1070I  Program db2icrt completed successfully.

(*) Fixing /etc/services file for DB2 ... 
/bin/bash: db2stop: command not found

根据我的理解,(*) Fixing /etc/services file for DB2 ...的存在似乎已经是错误的了(因为它没有出现在我的英特尔日志中,听起来不像一切都很好),而/bin/bash: db2stop: command not found出现是因为/var/db2_setup/include/db2_common_functions的第81行,其中显示su - ${DB2INSTANCE?} -c 'db2stop force'。据我所知,su -应该以目标用户的路径运行。在主目录中的每个.profile.bashrc中,~/sqllib/db2profile都是源(通过. /database/config/db2dude/sqllib/db2profile)。
但是,当作为容器(docker exec -it db2-test bash)内的根用户调用su - db2dude -c 'echo $PATH'时,它打印/usr/local/bin:/bin:/usr/bin。因此,PATH显然不是预期的那样。
也许有人可以弄清楚,在这一点上发生了什么。我也尝试运行Docker与“新的虚拟化框架”,这没有改变任何东西。我认为,Docker的兼容性魔术可能不是完美的,但我期待着找到某种变通办法,也许通过建立一个映像上的ibmcom/db2
我非常感谢你的时间和建议。提前非常感谢。

cclgggtu

cclgggtu1#

正如@mshabou的回答所述,目前还没有支持。一种方法是在Docker命令前面加上DOCKER_DEFAULT_PLATFORM=linux/amd64,或者在启动容器之前在shell中执行export DOCKER_DEFAULT_PLATFORM=linux/amd64
或者,你也可以使用colima。按照GitHub页面上的描述安装colima,然后以colima start --arch x86_64的模拟模式启动它。现在你就可以用你习惯的方式使用你的ibmcom/db2镜像了(尽管性能有所下降)。

ilmyapht

ilmyapht2#

ARM架构不支持db2,仅支持以下架构:amd64、ppc64le、s390x系列处理器
https://hub.docker.com/r/ibmcom/db2

相关问题