如何解决docker 执行exec报错问题

发布时间 - 2022-01-12 00:00:00    点击率:
docker执行exec报错的解决办法:1、把脚本中的第一行用“/bin/bash”替换;2、执行“docker exec -d service_name /bin/bash -c '/opt/start.sh'”。

本文操作环境:centos7系统、Docker 20.10.11版本、Dell G3电脑。

docker exec 执行脚本失败解决方法

背景介绍

docker容器里有一个脚本,需要在使用的时候在后台运行,但是通过docker exec 调用这个脚本却一直得不到想要的结果,于是开始了探究之路!

原始脚本

docker exec -it service_name /bin/bash -c '/opt/start.sh'

这个start.sh的作用就是在后台启动两个服务

#!/bash
nohup start1.sh > start1.log 2>&1 &
sleep 5
nohup start2.sh 2>&1 &
echo 'server started'

问题定位

1. 脚本书写不规范

从上述的命令中可以看到docker 启动的时候用的式/bin/bash 而脚本中指定的确实/bash.我们都知道脚本第一行的内容指定了shell脚本解释器的路径,而且这个指定路径只能放在文件的第一行。因此需要把脚本中的第一行用/bin/bash替换了,使得它们用同一个解释器

2.启动参数有问题

docker exec 执行的过程中使用了-it这个参数,

  • -t让docker分配一个伪终端并绑定到容器的标准输入上
  • -i则让容器的标准输入保持打开.

这样执行完后台脚本只能云行第一个start.sh, 第二个并不能起作用,因为执行完了终端也退出了,

看到help 中, 有一个-d, 后台云行脚本, 这一条刚好符合我们的要求

修改过程

docker exec -d service_name /bin/bash -c '/opt/start.sh'
#!/bin/bash
nohup start1.sh > start1.log 2>&1 &
sleep 5
nohup start2.sh 2>&1 &
echo 'server started'

 推荐学习:《docker教程》


# docker  # bash  # 有一个  # 这一  # 放在  # 出了  # 第一个  # 之路  # 第二个  # 可以看到  # 并不能  # 报错 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 大型企业网站制作流程,做网站需要注册公司吗?  Laravel Fortify是什么,和Jetstream有什么关系  Bootstrap整体框架之CSS12栅格系统  Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知  Laravel如何使用Livewire构建动态组件?(入门代码)  C#如何调用原生C++ COM对象详解  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  如何自定义建站之星模板颜色并下载新样式?  android nfc常用标签读取总结  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  Laravel如何配置任务调度?(Cron Job示例)  制作公司内部网站有哪些,内网如何建网站?  Laravel如何配置Horizon来管理队列?(安装和使用)  如何将凡科建站内容保存为本地文件?  如何批量查询域名的建站时间记录?  详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南  大同网页,大同瑞慈医院官网?  IOS倒计时设置UIButton标题title的抖动问题  如何在IIS中新建站点并解决端口绑定冲突?  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】  Laravel如何处理CORS跨域请求?(配置示例)  原生JS获取元素集合的子元素宽度实例  Laravel如何自定义错误页面(404, 500)?(代码示例)  如何获取上海专业网站定制建站电话?  laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】  佛山企业网站制作公司有哪些,沟通100网上服务官网?  laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法  HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】  使用Dockerfile构建java web环境  高端网站建设与定制开发一站式解决方案 中企动力  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  免费网站制作appp,免费制作app哪个平台好?  Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  JavaScript中的标签模板是什么_它如何扩展字符串功能  如何在Tomcat中配置并部署网站项目?  网站制作企业,网站的banner和导航栏是指什么?  javascript中数组(Array)对象和字符串(String)对象的常用方法总结  详解vue.js组件化开发实践  Laravel如何构建RESTful API_Laravel标准化API接口开发指南  javascript中的try catch异常捕获机制用法分析  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】  laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法  Laravel如何实现本地化和多语言支持?(i18n教程)  香港服务器网站卡顿?如何解决网络延迟与负载问题?