我已经知道,在dockerfile中,当提供ENTRYPOINT和CMD时,CMD中的值将作为ENTRYPOINT的默认参数,然后当运行具有附加参数的容器时,附加参数将替换dockerfile中的CMD值。与码头文件中的CMD和ENTRYPOINT相混淆
,但是当我看到的MongoDB的dockerfile,我很困惑,其dockerfile的入口点和CMD部分:
ENTRYPOINT ["docker-entrypoint.sh"]
EXPOSE 27017
CMD ["mongod"]
我知道当我运行docker run mongo:latest
这将是docker-entrypoint.sh mongod
,但是当我运行docker run mongo:latest --auth
为什么它可以正确运行?难道不是docker-entrypoint.sh --auth
?因为--auth
将取代mongod
,所以我为什么运行docker run mongo --auth
,但它工作正常?
非常感谢,现在很清楚。 – laoqiren