大家好,又見面了,我是你們的朋友全棧君。
問題現象
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