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

  • 原创
  • 作者:程序员三丰
  • 发布时间:2021-05-22 01:03
  • 浏览量:1261
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,也创建成功,无任何报错。

  1. [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
  2. cfe75fa3b2363049f147f42d9848d8f486e3f6bed5c36526100bda0886a22e4a

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

  1. [root@iZ2ze571fco0kt6i4nui21Z redis]# docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 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 查询所有容器列表,结果如下

  1. [root@iZ2ze571fco0kt6i4nui21Z redis]# docker ps -a
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. cfe75fa3b236 redis:v4.0.11 "/usr/local/bin/redi…" 15 seconds ago Exited (1) 14 seconds ago redis4
  4. 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容器,就出现了本文出现的问题

  1. [root@iZ2ze571fco0kt6i4nui21Z redis]# docker exec -it redis4 bash
  2. 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日志,就找到了错误原因
  1. [root@iZ2ze571fco0kt6i4nui21Z redis]# docker exec -it redis43 sh
  2. / # tail -20 /var/log/redis/redis.log
  3. 13:C 05 Jun 12:26:20.511 # Can't chdir to '/var/lib/redis': No such file or directory
  4. 15:C 05 Jun 12:26:57.182 # Can't chdir to '/var/lib/redis': No such file or directory

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

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

声明:本文为原创文章,51blog.xyz和作者拥有版权,如需转载,请注明来源于51blog.xyz并保留原文链接:https://www.51blog.xyz/article/5.html

文章归档

推荐文章

buildadmin logo
Thinkphp8 Vue3 Element PLus TypeScript Vite Pinia

🔥BuildAdmin是一个永久免费开源,无需授权即可商业使用,且使用了流行技术栈快速创建商业级后台管理系统。

热门标签

PHP ThinkPHP ThinkPHP5.1 Go Mysql Mysql5.7 Redis Linux CentOS7 Git HTML CSS CSS3 Javascript JQuery Vue LayUI VMware Uniapp 微信小程序 docker wiki Confluence7 学习笔记 uView ES6 Ant Design Pro of Vue React ThinkPHP6.0 chrome 扩展 翻译工具 Nuxt SSR 服务端渲染 scrollreveal.js ThinkPHP8.0 Mac webman 跨域CORS vscode GitHub ECharts Canvas