docker start并不能使一個停止的容器 "起來"。
如下面的命令,我想啟動一個停止的容器eloquent_hamilton(Container ID:b2b7883c8620),它的狀態是Exited (0) ,所以我用docker start eloquent_hamilton或docker start b2b7883c8620。
然而,eloquent_hamilton的狀態仍然是Exited (0)。
常見的情況似乎是,只要輸入docker start [Container ID],容器的狀態就是 "UP",直到用戶明確發送命令來殺死或退出運行中的容器。
什么是錯的?
環境如下
環境是這樣的
如果能提供任何資訊,我們將不勝感激。
C:UsersNaoki>docker images
存盤庫標簽影像ID創建大小
forcattranslator/hello latest 64c8ea9561cc 大約一個小時前 72.8MB
forcattranslator/myjulia 最新 84ec6294d0dc 2天之前 4.24GB
hassiweb/myjulia julia-1.6.2 84ec6294d0dc 2天之前 4.24GB
C:UsersNaoki>docker run -it forcattranslator/hello
"hello docker!"
C:UsersNaoki>docker container ls -a
容器ID影像命令創建狀態埠名稱
b2b7883c8620 forcattranslator/hello "cat /tmp/hello.txt" 21秒前 退出(0) 19秒前 eloquent_hamilton
f7c65f29f81b forcattranslator/hello "cat /tmp/hello.txt" 48秒前 退出 (0) 46秒前 admiring_tereshkova
c47ac4b56d64 forcattranslator/hello "bash" 7分鐘前 Up 5 minutes thirsty_carson
9c83d47cfea2 forcattranslator/hello "cat /tmp/hello.txt" 9分鐘前 退出 (0) 7分鐘前 gifted_feynman
9d17957f8e43 forcattranslator/hello "cat /tmp/hello.txt" 18分鐘前 退出 (0) 17分鐘前 laughing_albattani
43b967492f0c forcattranslator/hello "cat /tmp/hello.txt" 46分鐘前 退出 (0) 22分鐘前 sad_wu
f97a713d6889 hassiweb/myjulia:julia-1.6.2 "tini -g -- start-no..." 2天前 Up 2 days 0.0.0.0:8888->8888/tcp, ::8888->8888/tcp docker-julia_julia_1
C:UsersNaoki>docker start eloquent_hamilton
辯才_漢密爾頓
C:UsersNaoki>docker container ls -a
容器ID影像命令創建狀態埠名稱
b2b7883c8620 forcattranslator/hello "cat /tmp/hello.txt" 大約一分鐘前 退出 (0) 4秒前 eloquent_hamilton
f7c65f29f81b forcattranslator/hello "cat /tmp/hello.txt" 大約一分鐘前 退出 (0) 大約一分鐘前 admiring_tereshkova
c47ac4b56d64 forcattranslator/hello "bash" 8分鐘前 啟動6分鐘 thirsty_carson
9c83d47cfea2 forcattranslator/hello "cat /tmp/hello.txt" 10分鐘前 退出 (0) 8分鐘前 gifted_feynman
9d17957f8e43 forcattranslator/hello "cat /tmp/hello.txt" 19分鐘前 退出 (0) 17分鐘前 laughing_albattani
43b967492f0c forcattranslator/hello "cat /tmp/hello.txt" 47分鐘前 退出 (0) 22分鐘前 sad_wu
f97a713d6889 hassiweb/myjulia:julia-1.6.2 "tini -g -- start-no..." 2天前 Up 2 days 0.0.0.0:8888->8888/tcp, ::8888->8888/tcp docker-julia_julia_1
進展情況
按照答案,我嘗試了docker start -i eloquent_hamilton,加入-i選項以保持通信的互動性,但結果還是發現容器的狀態為Exited(0)。
docker start -i eloquent_hamilton
"hello docker!"
C:UsersNaoki mp>docker container ls -a
容器ID影像命令創建狀態埠名稱
b2b7883c8620 forcattranslator/hello "cat /tmp/hello.txt" 22小時前 退出 (0) 16秒前 eloquent_hamilton
f7c65f29f81b forcattranslator/hello "cat /tmp/hello.txt" 22小時前 退出 (0) 22小時前 admiring_tereshkova
c47ac4b56d64 forcattranslator/hello "bash" 22小時前 退出 (255) 20小時前 thirsty_carson
9c83d47cfea2 forcattranslator/hello "cat /tmp/hello.txt" 23小時前 退出 (0) 22小時前 gifted_feynman
9d17957f8e43 forcattranslator/hello "cat /tmp/hello.txt" 23小時前 退出 (0) 23小時前 laughing_albattani
43b967492f0c forcattranslator/hello "cat /tmp/hello.txt" 23小時前 退出 (0) 23小時前 sad_wu
f97a713d6889 hassiweb/myjulia:julia-1.6.2 "tini -g -- start-no..." 3 天前 Up 20 hours 0.0.0.0:8888->8888/tcp, ::8888->8888/tcp docker-julia_julia_1
uj5u.com熱心網友回復:
看起來你的容器是hello world的例子容器(或基于它)。這個容器包含一個單一的腳本,它輸出一些東西,然后緊接著就結束了。因此,再次 "啟動 "它是有效的(在你的截圖中,你可以看到它在 4 秒前就退出了),但它并沒有做什么。
每個 docker 容器都有一個定義容器運行時間的行程。在這個行程結束的時候,容器就會停止。在你的案例中,它將 Hello 輸出到某個地方,然后退出(因此出現了 "4 秒前退出(0)")。
如果你希望它在這之后繼續運行,你需要確保容器的最后一個行程是不確定的。這可以通過多種方式實作,但最常見的是,你會發現運行諸如網路服務器的軟體。
[EDIT] 在你的例子中,你第一次運行時使用了"-it "標志,這意味著輸出將被重定向到你的終端(正如在 "Hello Docker "中可以看到)。第二次和第三次,容器只是運行,并沒有輸出到終端。
uj5u.com熱心網友回復:
你的容器只是簡單地抓取檔案/tmp/hello.txt。正如@JustLudo指出的,當你運行docker run -it forcattranslator/hello時,容器將檔案/tmp/hello.txt的內容顯示在tty上。然后它就結束了,因此容器被停止。
當你再次啟動容器時,它再次執行入口點(cat /tmp/hello.txt)并再次完成。這就是容器所做的,因為在第一次 "運行 "時,你沒有添加任何其他命令。
你可以通過執行docker logs eloquent_hamilton來檢查輸出,或者通過執行docker start -i eloquent_hamilton
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/307952.html
標籤:
上一篇:如何搜索一個LPWSTR的子串?
