解決 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的路徑配置錯誤導致)

總結
我的思路也許並不能解決您的問題,但是我寫這邊博文的目的是【授人以漁】

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章