簡體   English   中英

Docker 無法以分離模式啟動容器

[英]Docker fails to start container in detached mode

我有一個谷歌虛擬機,我正在嘗試啟動一個容器,它將啟動一個 web 服務器。

因為我希望能夠用我的終端做其他事情,所以我嘗試以分離模式啟動容器。

這是我輸入的:

sudo docker run -d -p 5001:5001 -v $(pwd):/mnt/translation -w="/mnt/translation" -e "TERM=xterm-color" f_translate

在此之后,我得到一個字符串

9f8cc86f1e4a262bff8ff4f40f1a9036c686472b0ec3fded84980a60d26f6980

但是,我無法使用docker exec連接到服務器。

我輸入docker ps ,查看所有正在運行的容器,但沒有一個正在運行。

編輯:這是docker ps -a的結果:

CONTAINER ID   IMAGE          COMMAND       CREATED          STATUS                      PORTS     NAMES
9f8cc86f1e4a   f_translate    "/bin/bash"   28 minutes ago   Exited (0) 28 minutes ago             reverent_sinouss
i
faeec783edce   f_translate    "/bin/bash"   37 minutes ago   Exited (0) 37 minutes ago             adoring_chaum
1b96a5117aef   f_translate    "/bin/bash"   25 hours ago     Exited (129) 24 hours ago             xenodochial_noet
her
b364de5733b9   f_translate    "/bin/bash"   41 hours ago     Created                               nice_lumiere
5b042e459548   f_translate    "/bin/bash"   41 hours ago     Exited (0) 41 hours ago               hardcore_elbakya
n
ea97b56d6822   f_translate    "/bin/bash"   42 hours ago     Created                               practical_lumier
e
2392c2b074a1   f_translate    "/bin/bash"   42 hours ago     Created                               hardcore_easley
e24c579f3094   f_translate    "/bin/bash"   42 hours ago     Created                               inspiring_merkle
3e4e412c551b   f_translate    "/bin/bash"   42 hours ago     Created                               crazy_engelbart
8c198931c560   f_translate    "/bin/bash"   42 hours ago     Exited (0) 41 hours ago               hardcore_cannon
67c5ad80b074   f_translate    "/bin/bash"   42 hours ago     Exited (0) 42 hours ago               dreamy_margulis
b2b8773a9d77   a2f276018a81   "/bin/bash"   42 hours ago     Exited (127) 42 hours ago             jolly_greider
2c3c74ee073c   a2f276018a81   "/bin/bash"   42 hours ago     Exited (0) 42 hours ago               pensive_chandras
ekhar
8563a35a96a7   cq_image       "/bin/bash"   47 hours ago     Exited (127) 46 hours ago             gallant_rubin
44431d47308c   cq_image       "/bin/bash"   2 days ago       Exited (129) 2 days ago               peaceful_tesla

當我輸入docker logs 9f8cc86f1e4a262bff8ff4f40f1a9036c686472b0ec3fded84980a60d26f6980時,我什么也得不到。

您僅使用 bash 命令運行容器。 此命令在運行后立即返回退出代碼 0。 然后容器完成工作。
您必須使用一些不會在運行后立即返回退出代碼的進程來運行容器。
這是作業成功或錯誤完成時容器完成工作的正常行為。

似乎有必要解釋容器的作用:

容器被設計用來完成一項工作。 你告訴他們要執行哪個命令,他們會一直這樣做,直到完成。 通常這是在Dockerfile中指定的,您可以在其中定義ENTRYPOINTCMD來告訴容器在啟動時要做什么。 然后容器將執行該特定工作,直到完成,然后關閉。

你的容器就是這種情況。 您的容器執行命令/bin/bash ,如docker ps -a output 的COMMAND列中所示。 所以它實際上正在做它應該做的事情。 它只是在執行 bash 並且由於該命令在此時完成它正在關閉,因此您無法再連接到它。

為了能夠在容器中執行,它必須啟動並運行,為此您必須更改容器的入口點。 您可以通過Dockerfile構建新映像來執行此操作,也可以使用docker run命令即時覆蓋它。 出於調試目的,尤其是在想要手動執行到容器中時,您很可能會選擇一個什么都不做但永遠運行的命令,比如sleep infinity

TL;博士

使用docker run ,您可以定義容器在啟動時應執行的命令。 執行以下命令以確保您的容器不會立即退出:

sudo docker run -d -p 5001:5001 -v $(pwd):/mnt/translation -w="/mnt/translation" -e "TERM=xterm-color" f_translate /bin/sh -c sleep infinity

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM