天天看點

docker 容器自動退出(退出docker容器指令)

大家好,又見面了,我是你們的朋友全棧君。

問題現象

centos 啟動一個容器添加了-d 參數,但是docker ps 找不到容器,docker ps -a檢視卻已經退出了

[root@VM_0_6_centos ~]# docker run -d centos

a44b2b88559b68a2221c9574490a0e708bff49d88ca21f9e59d3eb245c7c0547

[root@VM_0_6_centos ~]# docker ps

找不到容器資訊

[root@VM_0_6_centos ~]# docker ps -a

status列顯示已退出

[root@VM_0_6_centos ~]# docker logs centos

沒有任何異常日志

退出原因

1、docker容器運作必須有一個前台程序, 如果沒有前台程序執行,容器認為空閑,就會自行退出

2、容器運作的指令如果不是那些一直挂起的指令( 運作top,tail、循環等),就是會自動退出

3、這個是 docker 的機制問題

解決方案

方案1:

網上有很多介紹,就是起一個死循環程序,讓他不停的循環下去,前台永遠有程序執行,那麼容器就不會退出了,以centos為例

shell>docker run -d centos /bin/sh -c “while true; do echo hello world; sleep 1; done”

缺點: 指令太冗長了,還占用一個終端

方案2:

shell>docker run -dit centos /bin/bash

添加-it 參數互動運作

添加-d 參數背景運作

這樣就能啟動一個一直停留在背景運作的Centos了。

shell>docker ps 容器運作起來了

進入容器的方法:

使用exec,不要使用attach指令

attach指令就是使用現有終端,如果你要退出容器操作,那麼bash結束,容器也就退出了

shell>docker exec -it <container_id> /bin/bash //建立一個bash

釋出者:全棧程式員棧長,轉載請注明出處:https://javaforall.cn/128433.html原文連結:https://javaforall.cn