Skip to main content

podman에서 컨테이너가 실행되지 않을때 조치방법

시작하는 말

안녕하세요, 고니 입니다.
기존에 작성했던 컨텐츠들 업데이트를 하면서 문서의 리팩토링(Refactoring)을 진행해보려고 합니다.

podman에서 컨테이너 띄울때 아래 메시지가 나오면서 정상적으로 실행되지 않는 경우가 있어요.

실행절차

  1. podman에서 컨테이너 띄울때 에러메시지 발생
    $> podman run -d --name=test
    ...
    Error: runc: container_linux_go:370: staring container process caised: error adding seccomp filter rule for syscall bdflush: permission denied
  2. 컨테이너 상태를 보면 아래와 같이 state가 구동(Up)이 아니라 생성(created)만 되게 되어요
    $> docker ps -a
    Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
    CONTAINER ID  IMAGE                        COMMAND               CREATED       STATUS                   PORTS                    NAMES
    bd3896eb439d  localhost:5000                                     5 months ago  Created                  0.0.0.0:80->80/tcp  test
    

  3. container runtime은 runc와 crun을 사용할 수 있는데요. 기본적으로 사용할 수 있는 runtime이 무엇인지는  docker(podman) info로 확인 할 수 있습니다.

runtime 확인 방법

  1. PODMAN 기반인 경우
    $> podman info
    ...
      ociRuntime:
        name: runc
        package: runc-1.1.12-1.module+el8.10.0+1825+623b0c20.x86_64
        path: /usr/bin/runc
    ...

  2. DOCKER기반인 경우
    $> docker info 
    ...
      ociRuntime:
        name: crun
        package: crun-1.8.7-1.el9.x86_64
        path: /usr/bin/crun
    ...

  3. runtime의 차이점
    1. crun은 runc에 비해 최대 2배 빠르고, 메모리 사용량은 최대 50배 적습니다
    2. crun은 최소 프로세스 수 설정, rootless 컨테이너의 그룹별 파일 공유, OCI 후크의 stdout/stderr 제어 등 추가 기능을 제공합니다

조치방안

  1. 한꺼번에 다 할 필요는 없고 1번해보고 해결이 안되면 2번, 2번도 안되면 3번순으로 진행)
  2. podman 패키지 업데이트
    $> yum update podman -y
    ...
    

  3. podman 실행 옵션에서 security설정 변경
    $> podman run -d --security-opt=seccomp=unconfined --name=test
    ...

  4. runtime 종류 변경
    $> podman run --runtime crun -d --name=test ...
    

확인방법

$> docker ps -a
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
CONTAINER ID  IMAGE                        COMMAND               CREATED       STATUS                   PORTS                    NAMES
bd3896eb439d  localhost:5000                                     5 months ago  Up 2 weeks ago           0.0.0.0:80->80/tcp  test

 

Reference

  1. https://docs.redhat.com/ko/documentation/red_hat_enterprise_linux/9/html/building_running_and_managing_containers/selecting-a-container-runtime_building-running-and-managing-containers#selecting-a-container-runtime_building-running-and-managing-containers 
  2. https://docs.redhat.com/ko/documentation/red_hat_enterprise_linux/8/html/building_running_and_managing_containers/proc_running-containers-with-runc-and-crun_selecting-a-container-runtime