【发布时间】:2018-08-31 14:09:18
【问题描述】:
我无法使用 DB2 构建 Docker 映像。
Dockerfile:
FROM ibmcom/db2express-c
EXPOSE 50000
CMD ["db2start"]
SHELL ["/bin/bash", "-c"]
RUN su - db2inst1 -c "db2 create db DMX"
日志:
Building image...
Step 1/5 : FROM ibmcom/db2express-c
---> 7aa154d9b73c
Step 2/5 : EXPOSE 50000
---> Using cache
---> 3172f8b3790b
Step 3/5 : CMD ["db2start"]
---> Using cache
---> f38e27452920
Step 4/5 : SHELL ["/bin/bash", "-c"]
---> Using cache
---> 1cef61dbf3c5
Step 5/5 : RUN su - db2inst1 -c "db2 create db DMX"
---> Running in 59b7a5d1c0ba
DB21018E A system error occurred. The command line processor could not
continue processing.
Error: ResponseItem.ErrorDetail[code=8,message=The command '/bin/bash -c su
- db2inst1 -c "db2 create db DMX"' returned a non-zero code: 8]
但如果我手动执行su - db2inst1 -c "db2 create db DMX" 它会起作用:
MB-54:test mkadan$ docker exec -i -t db2 /bin/bash
[root@5cb934e6d434 /]# su - db2inst1 -c "db2 create db DMX"
DB20000I The CREATE DATABASE command completed successfully.
任何提示这里有什么问题?
【问题讨论】:
-
我的猜测是您没有在 docker shell 中设置 DB2 环境。您将需要导入
/home/db2inst1/sqllib/db2profile(您的路径可能不同,具体取决于您的安装路径)。我不熟悉你会如何在 Docker 中做到这一点。 -
比较两种情况的 db2diag 条目(交互工作时,与通过“su - db2inst1”运行时失败时)。如有必要,请先(暂时)为实例设置 DIAGLEVEL 4。
标签: docker db2 dockerfile db2-express-c