解决 docker exec 报错 Error response from daemon: Container XXXXX is not running

docker exec 报错 Error response from daemon: Container XXXXX is not running 解决思路

XXXXX 为报错容器id

问题描述

废话不多说,直奔主题~~

我出现本文讨论的这个问题的场景是:

使用自己手动编写的Dockerfile,构建redis4镜像,构建镜像过程无任何报错。
通过docker run基于上一步构建的redis4镜像创建容器redis4,也创建成功,无任何报错。

[root@iZ2ze571fco0kt6i4nui21Z redis]# docker run -itd -p 6389:6379 -v /wp/ss.redis.p/redis/conf:/usr/src/redis/conf --name redis4 redis:v4.0.11
cfe75fa3b2363049f147f42d9848d8f486e3f6bed5c36526100bda0886a22e4a

通过docker ps查询容器列表,发现没有redis4容器,结果如下

[root@iZ2ze571fco0kt6i4nui21Z redis]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
e04084a150f5        nginx:v1.14.1       "/usr/local/nginx/sb…"   19 hours ago        Up 19 hours         0.0.0.0:8001->80/tcp   nginx1.14.1

通过docker ps -a 查询所有容器列表,结果如下

[root@iZ2ze571fco0kt6i4nui21Z redis]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS                  NAMES
cfe75fa3b236        redis:v4.0.11       "/usr/local/bin/redi…"   15 seconds ago      Exited (1) 14 seconds ago                          redis4
e04084a150f5        nginx:v1.14.1       "/usr/local/nginx/sb…"   19 hours ago        Up 19 hours                 0.0.0.0:8001->80/tcp   nginx1.14.1

发现问题所在 =》 redis4容器的STATUS为Exit…

网传解决办法 docker start redis4,但依然无法启动redis4容器,问题不能解决

尝试运行docker exec进入redis4容器,就出现了本文出现的问题

[root@iZ2ze571fco0kt6i4nui21Z redis]# docker exec -it redis4 bash
Error response from daemon: Container cfe75fa3b2363049f147f42d9848d8f486e3f6bed5c36526100bda0886a22e4a is not running

解决思路

常规思路(无法解决)
  1. docker start 容器,不能解决问题
  2. docker logs 容器,也看不到报错信息
自己动脑,才是根本(真知)

从调测Dockerfile入手,先想办法执行并进入容器

一、 容器未运行,很明显容器启动后并未运行一个前台挂起的进程,对于redis而言猜测是启动redis的命令出了问题,以此为线索,继续思考
二、 如何能让容器启动后【挂起】呢?首先要保证Dockerfile的启动redis的方式为CMD,这样我们尝试启动容器的时候,将其替换为top 或 bash(alpine为sh),果然这样我进入到了容器~~ =》 突破性进展啊
三、 很容易通过命令ps查看到redis未启动,然后查redis日志,就找到了错误原因
[root@iZ2ze571fco0kt6i4nui21Z redis]# docker exec -it redis43 sh
/ # tail -20 /var/log/redis/redis.log 
13:C 05 Jun 12:26:20.511 # Can't chdir to '/var/lib/redis': No such file or directory
15:C 05 Jun 12:26:57.182 # Can't chdir to '/var/lib/redis': No such file or directory

最终,查到原来不是Dockerfile有问题,而是redis的配置文件有问题(配置项dir的路径配置错误导致)

总结
我的思路也许并不能解决您的问题,但是我写这边博文的目的是【授人以渔】

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西涯三锋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值