Docker 启动程序方式

293 天前
 Dffcc

https://www.bilibili.com/video/BV1qN411K7W3?t=844.3&p=42

https://www.bilibili.com/video/BV1qN411K7W3?t=373.6&p=43

第一片中说 Tomcat 不能不省,第二片实作,却是省的,这边有说错吗?

要进入或是启动 Docker 中的某个程序,可预设什麽都不加吗?

762 次点击
所在节点    Docker
9 条回复
julyclyde
290 天前
大家没兴趣去看你转载的视频
你首先要学会提问的方法
Dffcc
290 天前
@julyclyde 我觉得有些东西直接背起来就好了,讲师也没有解释得很清楚
julyclyde
290 天前
@Dffcc 不是答案的问题
而是大部分人根本不知道你在问什么
没那么多时间浪费在先看一遍视频去了解你要问什么
Dffcc
290 天前
就是 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
Dffcc
290 天前
还是全都是不加指令,即可启动进程?
Dffcc
290 天前
可以 运行容器 跟 启动进程 是不相关的
LemonPrefect
289 天前
我覺得 OP 需要查閱關於 docker entrypoint 和 command 的區別的文章。針對於一個容器來說,他一定需要有 entrypoint ,對於一般的 debian 底包來說一般是 bash 。那麼在有 entrypoint 的前提下,CMD 會被當做引數傳遞給 entrypoint 執行。因此 `CMD ["catalina.sh" "run"]` 實際上交由 bash 去執行 catalina 。而在 run 指令中指定的指令引數,也會被傳遞給 entrypoint, **覆蓋** 原有的 CMD 。這就是所謂的 CMD 可省略,是因為原有指定。
Dffcc
289 天前
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 的默認參數使用。

谢谢你,理解了
Dffcc
288 天前
@LemonPrefect docker top mytom ,可以查看容器的指定进程是否有执行

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1021084

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX