1. 程式人生 > >Docker容器一起動就退出的解決方案

Docker容器一起動就退出的解決方案

bash tex contain 現象 網上 ffffff 技術 參數 ces

問題現象:

centos 啟動一個容器添加了-d 參數,但是docker ps 或者docker ps -a查看卻已經退出了
shell>docker run -d centos
a44b2b88559b68a2221c9574490a0e708bff49d88ca21f9e59d3eb245c7c0547
shell>docker ps
技術分享圖片

what ? why?

退出原因

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
技術分享圖片

Docker容器一起動就退出的解決方案