繁体   English   中英

好像入口点和外壳形式的cmd都是分开执行的

[英]Seems like both entrypoint and shell form cmd are separately executed

我有一个从公共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。 有没有人遇到过这种情况或有任何参考资料解释了为什么会发生这种情况?

入口点和命令之间的关系是:命令是入口点的参数。 这就是为什么您现在看到奇怪的命令的原因,因为/var/db2_setup/lib/setup_db2_instance.sh可能是映像的默认入口点,并且正在通过命令传递为其添加/ bin / sh -c /init.sh作为参数。 因此,对于您的情况,您需要覆盖容器的入口点而不是命令。

因此,您可以输入入口点:/ bin / sh和命令:-c /init.sh,并且启动docker的结果将是:/ bin / sh -c /init.sh

或者,您可以只将空的入口点和完整的命令放在命令部分中,或者将空的命令部分并将完整的命令写到入口点中-由您决定。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM