我有一个从公共IBM Db2映像构建的定制映像,该映像具有一个进行初始化的入口点。 要在启动时创建多个数据库,我编写了自己的init.sh并将其放在CMD子句中。 “ docker ps”中的命令类似于:
/var/db2_setup/lib/setup_db2_instance.sh /bin/sh -c /init.sh
init.sh是
#!/bin/sh
su - db2inst1 << EOF
export PATH=$PATH:/opt/ibm/db2/V11.1/bin
db2 create database DB1
db2 create database DB2
db2 create database DB3
EOF
据我所知,以下“ / bin / sh -c /init.sh”应该忽略,因为我检查了setup_db2_instance.sh文件,在该文件中没有代码处理/ bin / sh之类的参数。
但是db2已成功初始化,并且创建了三个DB。有没有人遇到过这个问题或有任何参考资料解释为什么会发生这种情况?
答案 0 :(得分:0)
入口点和命令之间的关系是:命令是入口点的参数。这就是为什么您现在看到奇怪的命令的原因,因为/var/db2_setup/lib/setup_db2_instance.sh可能是映像的默认入口点,并且正在通过命令传递为其添加/ bin / sh -c /init.sh作为参数。因此,对于您的情况,您需要覆盖容器的入口点而不是命令。
因此,您可以输入入口点:/ bin / sh和命令:-c /init.sh,启动docker的结果将是:/ bin / sh -c /init.sh
或者您可以将空的入口点和完整命令放在命令部分中,或者将空的命令部分然后将完整命令写入入口点中-由您决定。