Container
容器處於執行狀態意味著什麼?
當我
podman create
接著執行時podman exec
,我被告知我的容器狀態沒有執行,$ ctr=$(podman create alpine:3) dc63e5975a918485b3d6a0ddf90576213b02d00e15fd84bab97732cf6d1f885a $ podman exec -ti $ctr /bin/sh Error: can only create exec sessions on running containers: container state improper
沒有執行狀態的容器意味著什麼?有沒有辦法在容器上設置狀態,即使我啟動了容器,它似乎
podman exec
也不起作用。$ podman start $ctr dc63e5975a918485b3d6a0ddf90576213b02d00e15fd84bab97732cf6d1f885a $ podman exec -ti $ctr /bin/sh Error: can only create exec sessions on running containers: container state improper
;tldr:如果容器內部的程序正在執行,則容器正在“執行”。只有當
Created
容器啟動並且狀態為Up
如果您創建一個
podman create
狀態為的容器Created
,$ podman create alpine:3 d02b4e268fd4bb4a816852efd2e032069402474237e7bea6b3708b0319e9c318 $ podman container ls -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d02b4e268fd4 docker.io/library/alpine:latest /bin/sh 8 seconds ago Created exciting_hofstadter
現在,你可以從這個開始
podman start
,但它不會停留在那個狀態,它會立即退出,$ podman start d02b4e268fd4 d02b4e268fd4 $ podman container ls -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d02b4e268fd4 docker.io/library/alpine:latest /bin/sh 21 seconds ago Exited (0) 5 seconds ago exciting_hofstadter
這裡的解決方案是在其中有一個長時間執行的程序,
# status created $ podman create -ti alpine:3 /bin/sh
現在狀態是
Up
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cefa530172e3 docker.io/library/alpine:latest /bin/sh About a minute ago Up 25 seconds ago musing_cohen
現在你可以
exec
在裡面,$ podman exec cefa530172e3 /bin/echo "Hello World" Hello World
create Create but do not start a container exec Run a process in a running container
Exec 不會啟動您的容器。你想使用
start
或run
為此。如果它仍然無法工作,那麼您的容器可能在您能夠執行
exec
命令之前崩潰或退出。如果您的主程序退出,您的容器也會這樣做,另請參閱:https ://stackoverflow.com/a/28214133/2519977作為最低限度的測試,您可能想嘗試:
ctr=$(podman create alpine:3) podman run -d -it $ctr /bin/sh