Docker無法stop或者rm指定容器問題解決方案
Docker無法stop或者rm指定容器
今日準備重啟一下docker 容器部署的 Nginx 時,使用的命令是
docker exec -it ir-nginx nginx -s reload
結(jié)果發(fā)現(xiàn)無法重啟報錯
然后想著關(guān)閉再啟動,結(jié)果發(fā)現(xiàn)
docker restart 、docker stop 、docker kill 、docker exec
都不行
于是用systemctl stop docker再 systemctl start docker
雖然命令可以執(zhí)行成功,但是Nginx那個容器還是不能關(guān)閉、重啟
執(zhí)行 docker restart
報錯記錄的為
OCI runtime exec failed: exec failed: json: cannot unmarshal number into Go struct field CompatState.init_process_start of type string: unknown
于是想著再復制一個yml腳本(弄一個新的docker),改了一下里面的信息

再執(zhí)行 docker-compose -f /data/compose/nginx-arm64-v2.yml up -d
報錯記錄的為
Error response from daemon: Cannot restart container f8ccd87c9714: Cannot kill container f8ccd87c97147abfdf8d3e11ed20d91f2a719dc249ce4bc37a32923689e0787c: unknown error after kill: runc did not terminate sucessfully: json: cannot unmarshal number into Go struct field CompatState.init_process_start of type string
里面有個 f8ccd87c97147abfdf8d3e11ed20d91f2a719dc249ce4bc37a32923689e0787c 的id
(后續(xù):往后就直接執(zhí)行原來的yml,關(guān)鍵是要把這個特別長的id拿到)
于是想查找與容器ID相關(guān)的文件或套接字,把它kill掉
lsof | grep "f8ccd87c97147abfdf8d3e11ed20d91f2a719dc249ce4bc37a32923689e0787c"
結(jié)果查出一大堆數(shù)據(jù),不可能一個一個kill吧
于是使用 docker inspect 和 awk 來獲取并殺死容器主進程PID
# 獲取容器主進程的PID
PID=$(docker inspect -f '{{.State.Pid}}' f8ccd87c97147abfdf8d3e11ed20d91f2a719dc249ce4bc37a32923689e0787c)
# 殺死該PID(請謹慎使用)
kill $PID該操作可以直接在控制臺執(zhí)行
在同一個 shell 會話中連續(xù)執(zhí)行這兩個命令時,第二個命令能夠“知道”它的 PID 來自于上一條命令的記錄,因為第一個命令的輸出被
臨時存儲(關(guān)閉終端窗口或退出 shell 會話時,變量就會消失)在了 PID 變量中,并且這個變量在后續(xù)的命令中是可以被引用的。
然后發(fā)現(xiàn)通過
docker ps (查看"正在運行"的容器) ,看不到那個容器了
通過 docker ps -a 可以看到,表示已經(jīng)被關(guān)閉了
于是再把這個容器給刪除了
docker rm -f ir-nginx
最后再執(zhí)行(這個yml‘腳本是我自己的,你們用你們自己的)
docker-compose -f /data/compose/nginx-arm64.yml up -d
驗證了一下重啟命令,發(fā)現(xiàn)沒問題了。
到此這篇關(guān)于Docker無法stop或者rm指定容器的文章就介紹到這了,更多相關(guān)Docker無法stop內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Docker stop停止/remove刪除所有容器
- docker容器無法stop的解決辦法
- Docker容器無法被stop or kill問題的解決方法
- 解決docker啟動容器失敗:cannot?access‘/docker-entrypoint-initdb.d/‘:Operation?not?permitted
- pycharm遠程連接docker容器的操作流程
- pycharm使用docker容器開發(fā)的詳細教程
- docker swarm如何在指定的node上運行指定的容器
- 在Ubuntu 16.04上用Docker Swarm和DigitalOcean創(chuàng)建一個Docker容器集群的方法
相關(guān)文章
Docker構(gòu)建簡單的個人主頁網(wǎng)站實戰(zhàn)教程
Docker是一種開源容器化技術(shù),可以打包、發(fā)布和運行應(yīng)用程序,本教程介紹了如何使用Docker構(gòu)建一個簡單的個人主頁網(wǎng)站,通過編寫Dockerfile來自定義鏡像,并展示了如何通過傳入環(huán)境變量來動態(tài)更改網(wǎng)頁內(nèi)容,項目使用的技術(shù)包括Docker、Alpine、Nginx、HTML、CSS和JavaScript2024-10-10
Docker+Nginx+KeepaLived實現(xiàn)Nginx一主一從高可用方式
在CentOS7主從服務(wù)器上部署Nginx容器并配置Keepalived實現(xiàn)高可用,通過虛擬IP自動切換,主從均需安裝Keepalived,配置健康檢查腳本監(jiān)控Nginx狀態(tài),故障時自動重啟或切換虛擬IP,需關(guān)閉防火墻和SELinux,并確保腳本有執(zhí)行權(quán)限2025-07-07

