docker 容器调试技巧

有时候docker容器可能因为映射不对,或者内部文件错误等等,会出现一启动就挂掉的情况,这种往往就是容器启动入口的程序有问题,但是因为一启动就挂,有时候日志啥的都看不到。这时候就可以通过 command 指令去覆盖掉默认Dockerfile 里面的 CMD 定义的入口(EntryPoint 定义的也类似)。

覆盖方式有两种

一种是 command: ["sleep","infinity"] 让主线程无限休眠,那么程序也就不会停止,那么docker 容器也就不会停掉。这样就可以通过 docker exec -it xxx bash 进入容器查看了。

另一个命令是 command: ["tail","-f","/dev/null"] 作用也是同理。

但是如果是用 docker swarm 或者 k8s 部署的调试的时候要注意, 因为这时候会有容器健康检测重启策略,用了上述命令,因为覆盖了默认的程序启动入口,那么健康检测逻辑就会失败,容器处于unhealthy 状态,然后就触发重启策略。

所以记得注释掉相关配置,如下示例:

version: "3.5"

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值