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