
https://www.bilibili.com/video/BV1qN411K7W3?t=844.3&p=42
https://www.bilibili.com/video/BV1qN411K7W3?t=373.6&p=43
第一片中说 Tomcat 不能不省,第二片实作,却是省的,这边有说错吗?
要进入或是启动 Docker 中的某个程序,可预设什麽都不加吗?
1 julyclyde 2024-03-09 11:52:51 +08:00 大家没兴趣去看你转载的视频 你首先要学会提问的方法 |
4 Dffcc OP 就是 docker run --name mytom -it -P 8081:8080 tomcat:8.5.49 ,要启动 Tomcat 进程,后面为何不能加 bash 指令? eg : docker run .... 最后的地方,要看 Dockerfile 中的 CMD 指令,但是不管从 Tomcat 的 Docker file 看 CMD ["catalina.sh" "run"],还是 uBuntu 的 Docker file 看 CMD CMD ["/bin/bash"],都是 CMD 括号可省略,那有没有预设是不可省略指令,还可以启动进程的特例呢? https://hub.docker.com/layers/library/ubuntu/jammy/images/sha256-aa772c98400ef833586d1d517d3e8de670f7e712bf581ce6053165081773259d?cOntext=explore https://hub.docker.com/layers/library/tomcat/8.5.49/images/sha256-8e75a9065fd732f2d06fccba994b246d77360b6e9870ac02b60b5b7d1fc6007d?cOntext=explore |
5 Dffcc OP 还是全都是不加指令,即可启动进程? |
6 Dffcc OP 可以 运行容器 跟 启动进程 是不相关的 |
7 LemonPrefect 2024-03-10 10:44:04 +08:00 我得 OP 需要查於 docker entrypoint 和 command 的的文章。於一容器,他一定需要有 entrypoint ,於一般的 debian 底包一般是 bash 。那在有 entrypoint 的前提下,CMD 被做引 entrypoint 行。因此 `CMD ["catalina.sh" "run"]` 上交由 bash 去行 catalina 。而在 run 指令中指定的指令引,也被 entrypoint, **覆** 原有的 CMD 。就是所的 CMD 可省略,是因原有指定。 |
8 Dffcc OP GPT4 回答 ENTRYPOINT ["catalina.sh"] CMD ["run"] 候,容器,行的命令是 catalina.sh run 。 在後一情下,如果在 docker run 指令中附加另外的,如下所示: bash docker run -it tomcat debug 那在 CMD ["run"] 中指定的 run 被新的 debug 覆,容器行的命令是 catalina.sh debug 。 所以,CMD 中指定的可以被省略,是因它被 docker run 指令中的所覆。如果 docker run 指令有提供新的,那它就作 ENTRYPOINT 的默使用。 谢谢你,理解了 |
9 Dffcc OP @LemonPrefect docker top mytom ,可以查看容器的指定进程是否有执行 |