同样是一个脚本,一个用CMD["/opt/setup.sh"],一个用ENTRYPOING["/opt、setup.sh"],此时我都以docker run -d 去启动这个容器,此时用CMD的就可以up起来,但是ENTRYPOING却是Exited,而且他还不能start起来,我查了CMD和ENTRYPOING的区别等资料,都没有发现原因,我现在就想知道就我的这个而言,他的原理是什么?
Bezanya ialah ENTERPOINT tidak akan ditimpa, tetapi CMD akan ditimpa.
Sebagai contoh, laksanakan yang sama docker run -it --rm <image_name> hello world
Jika ia ENTERYPOINT ["/bin/bash"] maka arahan sebenar untuk dijalankan ialah /bin/bash hello world
Jika ia CMD ["/bin/bash"] maka arahan sebenar dijalankan ialah hello world.
Iaitu, arahan semasa menjalankan bekas diluluskan sebagai parameter ENTERYPOINT apabila menggunakan CMD, CMD diganti secara langsung.
Jadi terdapat cara yang rumit untuk menggunakan kedua-duanya dalam fail docker:
ENTRYPOINT ["mongod"]
CMD ["--help"]
Dengan cara ini, pengguna bukan sahaja boleh menyesuaikan parameter untuk memulakan mongod, tetapi juga menggunakan --help untuk memaparkan maklumat bantuan secara lalai apabila tiada parameter ditentukan
Bezanya ialah ENTERPOINT tidak akan ditimpa, tetapi CMD akan ditimpa.
Sebagai contoh, laksanakan yang sama
docker run -it --rm <image_name> hello world
Jika ia
ENTERYPOINT ["/bin/bash"]
maka arahan sebenar untuk dijalankan ialah/bin/bash hello world
Jika ia
CMD ["/bin/bash"]
maka arahan sebenar dijalankan ialahhello world
.Iaitu, arahan semasa menjalankan bekas diluluskan sebagai parameter ENTERYPOINT apabila menggunakan CMD, CMD diganti secara langsung.
Jadi terdapat cara yang rumit untuk menggunakan kedua-duanya dalam fail docker:
Dengan cara ini, pengguna bukan sahaja boleh menyesuaikan parameter untuk memulakan mongod, tetapi juga menggunakan --help untuk memaparkan maklumat bantuan secara lalai apabila tiada parameter ditentukan
Semak log dahulu