コンテナが実行中であることはどういう意味ですか?

コンテナが実行中であることはどういう意味ですか?

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

答え1

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

答え2

;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

これでstartを使用できますが、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

関連情報