添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
坏坏的路灯  ·  Dockerfile に apt, ...·  4 天前    · 
冲动的梨子  ·  Build does not work · ...·  5 天前    · 
有胆有识的黑框眼镜  ·  Multi-platform | ...·  5 天前    · 
帅呆的烤地瓜  ·  深入探索Python ...·  1 周前    · 
没人理的路灯  ·  财政部 ...·  2 月前    · 
耍酷的人字拖  ·  ClickHouse tips #9: ...·  5 月前    · 

参考:https://blog.csdn.net/Zx13170918986/article/details/130831052

在dockerfile中编写CMD后,发现如果执行docker run -itd这样的指令,是没法启动CMD脚本的,例如以下的dockerfile

FROM node:16 
WORKDIR /home/
COPY start_server.sh ./start_server.sh
CMD ["nohup", "./start_server.sh", "&"]

原因是“使用 docker run -it 命令启动容器时,默认情况下会覆盖 Dockerfile 中定义的 CMD 指令。”

以下回答来自GPT:
docker run -itddocker run -d在Docker运行容器时确实有一些不同之处,主要涉及到交互性和终端的设置。- docker run -itd

  • -i:表示要打开一个交互式会话。
  • -t:为容器分配一个伪终端(pseudo-TTY)。
  • -d:在后台运行容器。

当您使用docker run -itd时,会分配一个伪终端(TTY),也就是分配一个终端。这样容器会以后台模式运行,但是也会打开一个伪终端。由于分配了伪终端,Docker会认为您可能会需要交互式会话,因此不会执行Dockerfile中的CMD指令,因为Docker理解您可能会手动输入命令。

  • docker run -d
    • -d:在后台模式运行容器。

相对于docker run -itddocker run -d不包含-i-t参数,因此不会为容器分配伪终端,也不会打开交互式会话。在这种情况下,Docker会默认执行Dockerfile中的CMD指令,作为容器启动时的默认命令。

因此,如果您想要让Docker忽略交互式会话,且直接执行Dockerfile中的CMD指令,可以尝试使用docker run -d命令来启动容器。这样可以避免因为分配伪终端而导致CMD指令不执行的情况。

希望这个解释对您有所帮助。如果您还有其他问题,请随时告诉我!

docker: Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused “exec: “/bin/echo”: stat /bin/echo: no such file or directory”: unknown. 这是我的Dockerfile文件: FROM hello-world CMD ["/bin/echo","this is a
我有个公司公用的tomcat上面已经部署了项目,想用dockfile制作成容器,练练手.遇到了一个问题. 在用dockerfile构建完成后,启动了容器,但是发现tomcat没有自动启动. (公司的tomcat中已经修改了很多的配置,添加了很多东西,所以没有用docker的官方tomcat ) 以下是当时我写的Dockefile文件 (我在写这个文件时,已经在虚拟机上安装了一遍,因为使用的是yum...
在上面的示例中,您需要将`<base_image>`替换为您想要构建的基础镜像。然后,将您的sh文件命名为`script.sh`并将其复制到镜像中。接下来,使用`chmod +x`命令赋予脚本文件执行权限。最后,使用CMD指令来执行sh文件,这里使用了`/bin/bash`来解释执行脚本。 您可以根据自己的具体需求进行调整和修改。请确保在构建镜像之前将sh文件放在正确的位置,并且具有适当的执行权限。 super苏然: 我手动同步了个表的数据,6000万吧,4个小时跑完了,但是我看公司机器也没有加限制。 问题:canal手动同步会关闭其对应的实时同步,按topic维度关闭,但是其他实时同步的任务,还是正常进行的。因为内部没有加线程的同步限制,导致手动同步的任务占用资源过大,实时查库后直接调用esTemplate进行传输,连接池拉满了。导致我的实时同步任务,全部站岗,抢不过连接资源。全部报错 "ERROR [Thread-26] CanalAdapterKafkaWorker-- null Error sync but ACK!" 原生代码已经用ThrowAble进行catch异常了,但是errorMsg等于null。看不出问题。时间一长,其他的实时同步线程就假死了。但是我找不到假死的原因。就很烦 Docker部署ES服务,canal全量同步的时候内存爆炸,ES/Canal Adapter自动关闭,CPU100% sour_LI: 请问博主canal同步的效率咋样,我现在用grafana看了tps,只有0点多。canal同步到es。 Docker部署ES服务,canal全量同步的时候内存爆炸,ES/Canal Adapter自动关闭,CPU100% UncoDong: 无法定制SQL,我也没解决,github的issue好像也没解决方案,因此直接换ELK了。 耗时没有记录,但肯定是近乎实时的同步效率(不然当时不会采用该方案) Docker部署ES服务,canal全量同步的时候内存爆炸,ES/Canal Adapter自动关闭,CPU100% sour_LI: 博主,我看到文章里调了启动参数后,插入了几万条数据,请问耗时咋样呢 Docker部署ES服务,canal全量同步的时候内存爆炸,ES/Canal Adapter自动关闭,CPU100% sour_LI: 阻塞的问题解决了,数据量太多,写不过来。没法定制sql我也有这个问题,这导致提出来的需求有些复杂的就没办法完成。请问有办法解决吗