Docker容器执行run命令后频繁退出,请求技术排查协助
解决Docker容器启动后立即退出的问题
问题根源
你的Dockerfile里的CMD指令格式错误,用了大括号{},Docker会把它当作shell命令执行,系统找不到{"nginx","-g","daemon off;"}这个命令,导致容器启动失败,退出码127(命令未找到)。
修复方案
把CMD指令改成JSON数组格式(用中括号[]),正确的Dockerfile如下:
FROM ubuntu RUN apt update -y RUN apt install nginx -y COPY . /var/www/html/ CMD ["nginx", "-g", "daemon off;"]
为什么这样改?
- Docker的
CMD有两种格式:JSON数组格式和shell格式。 - 用JSON数组时,Docker会直接执行
nginx命令,不会通过shell中转;daemon off;参数能让nginx在前台运行,而Docker容器会一直运行到主进程退出,这样容器就能保持运行状态。 - 你也可以用shell格式写
CMD nginx -g "daemon off;",但JSON数组格式更推荐,能避免shell解析带来的额外问题。
验证修复
重新构建镜像并运行:
docker build -t image1 . docker run -itd --name cont1 -p 8081:80 image1
执行docker ps查看容器状态,会显示容器处于运行中,访问http://localhost:8081就能看到nginx默认页面。
内容的提问来源于stack exchange,提问作者Dasari Raviteja
相关产品推荐
相关产品推荐

