컨테이너가 실행 중이라는 것은 무엇을 의미하나요?

컨테이너가 실행 중이라는 것은 무엇을 의미하나요?

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

관련 정보