同样是一个脚本,一个用CMD["/opt/setup.sh"],一个用ENTRYPOING["/opt、setup.sh"],此时我都以docker run -d 去启动这个容器,此时用CMD的就可以up起来,但是ENTRYPOING却是Exited,而且他还不能start起来,我查了CMD和ENTRYPOING的区别等资料,都没有发现原因,我现在就想知道就我的这个而言,他的原理是什么?
La différence est que ENTERPOINT ne sera pas écrasé, mais CMD le sera.
Par exemple, exécutez la même docker run -it --rm <image_name> hello world
Si c'est le cas ENTERYPOINT ["/bin/bash"] alors la commande à exécuter est /bin/bash hello world
Si c'est CMD ["/bin/bash"] alors la commande réelle exécutée est hello world.
C'est-à-dire que la commande lors de l'exécution du conteneur est passée comme paramètre d'ENTERYPOINT ; lors de l'utilisation de CMD, CMD est directement remplacé.
Il existe donc une manière délicate d'utiliser les deux dans le fichier docker :
ENTRYPOINT ["mongod"]
CMD ["--help"]
De cette façon, les utilisateurs peuvent non seulement personnaliser les paramètres de démarrage de mongod, mais également utiliser --help pour afficher les informations d'aide par défaut lorsqu'aucun paramètre n'est spécifié
La différence est que ENTERPOINT ne sera pas écrasé, mais CMD le sera.
Par exemple, exécutez la même
docker run -it --rm <image_name> hello world
Si c'est le cas
ENTERYPOINT ["/bin/bash"]
alors la commande à exécuter est/bin/bash hello world
Si c'est
CMD ["/bin/bash"]
alors la commande réelle exécutée esthello world
.C'est-à-dire que la commande lors de l'exécution du conteneur est passée comme paramètre d'ENTERYPOINT ; lors de l'utilisation de CMD, CMD est directement remplacé.
Il existe donc une manière délicate d'utiliser les deux dans le fichier docker :
De cette façon, les utilisateurs peuvent non seulement personnaliser les paramètres de démarrage de mongod, mais également utiliser --help pour afficher les informations d'aide par défaut lorsqu'aucun paramètre n'est spécifié
Vérifiez d'abord les journaux