포드만 기본 개념

띠로리·2024년 7월 18일

포드만 (POD MANager)

현재 오픈소스 컨테이너 엔진은 포드만으로 전환 중이다. docker-ee, docker-ce는 여전히 사용 가능하나, 오픈소스 표준 엔진 및 런타임을 제공하는 포드만을 권장한다. 포드만이 제공하는 표준형식은 다음과 같다.

  • OCI (Open Container Initiative)
  • CNI (Container Network Interface)
  • CRI (Container Runtime Interface)
    도커는 도커에서 사용하는 관리 방법 및 구조를 사용하고 있기 때문에, OCI 형식으로 이미지는 제공하지만, 네트워크 및 런타임 인터페이스는 도커 자체 구조를 사용한다.

포드만을 사용하는 이유는 다음과 같다.

  1. 쿠버네티스에서 사용하는 이미지 빌드
  2. 표준 런타임 기반으로 컨테이너 애플리케이션 테스트
  3. Pod 기반으로 구성하여 쿠버네티스에서 동작이 가능한지 확인
  4. systemdservice 형태로 컨테이너 구현을 원하는 경우

기존 도커 런타임은 위와 같은 기능을 제공하지 않는다.


① 빌더(BUILDAH)

빌더(BUILDAH) : 오픈소스 표준 이미지 빌드 도구

기존에는 docker build를 사용하여 구성 및 구현하였지만, 이미지 빌드 용도로 사용하기에는 너무 무겁기 때문에, 이미지 빌드 도구로 등장하였다. 기존 Dockerfile과 Containerfile을 둘 다 지원한다.

CI/CD에서 이미지 빌드 구성 및 생성 용도로 많이 사용하는 단일 도구이다.


② SKOPEO

도커에서 이미지 검색 부분을 분리하여 독립적인 도구로 만든 명령어이다. 이미지 검색 관련 URI는 oci, docker 프로토콜을 지원한다. 현재는 docker 프로토콜만 원격 HTTP/V2를 제공한다.

  1. oci
  2. oc-archive
  3. docker-daemon
  4. docker-archive
  5. docker
  6. dir
  7. container-storages

③ 포드만 설치

  • docker와 유사한 방식으로 podman을 사용할 수 있도록 설정해준다.
dnf search podman
dnf install podman-docker podman-compose -y 
# 검색한 패키지 중 필요한 패키지만 골라서 설치
# docker : Docker CLI와 podman을 호환되게 사용하도록 해주는 패키지
# compose : Docker Compose와 유사한 방식으로 podman을 사용하게 해주는 패키지

docker ps # 현재 실행 중인 Docker 컨테이너 나열
podman ps # 현재 실행 중인 Podman 컨테이너 나열
podman containert ls # 현재 실행 중인 Podman 컨테이너 나열 (위와 동일)

컨테이너 실행하기

podman run -d --name test-nginx --rm nginx
  • -d : detached mode, 컨테이너를 백그라운드에서 실행 (터미널 차지 x)
  • --name : container name 지정, 위 명령어에서는 test-nginx
  • --rm : delete when stop it, 실행을 멈추면 컨테이너를 삭제한다. 임시 컨테이너를 실행할 때 유용하다.
  • nginx : name of container image, 컨테이너 이미지의 이름이다. nginx 이미지를기반으로 새 컨테이너 생성한다.

또 다른 컨테이너 실행해보기

  • -it : 상호작용 모드로 터미널 할당
  • -i : interactive(상호작용 모드), -t : tty(터미널) 의미
  • touch : 빈 파일 생성 명령어
  • cat : 파일 내용 출력 명령어 > 현재 파일은 비어 있기 때문에 아무 출력도 없다.

④ 포드만과 도커의 차이 (is-active)

systemctl is-active podman.service # inactive
systemctl is-active docker.service # active

데몬리스(Daemonless) 아키텍처

  • 포드만 : 컨테이너를 관리하기 위해 항상 실행 중인 중앙 데몬이 없다. 각 Podman 명령은 독립적으로 실행되고, 사용자 세션과 연결된다.
  • 도커 : 데몬 기반 아키텍처이다. docker.service가 실행 중인 중앙 데몬을 사용하여 컨테이너를 관리한다.

추가내용


이 다이어그램은 Podman을 사용하여 컨테이너와 Pod를 생성, 관리 및 모니터링하는 기본적인 작업 흐름을 시각적으로 나타내고 있다.


위 다이어그램은 각각 다른 구성 및 포트 매핑을 사용하여 Podman을 통해 두 개의 Nginx 컨테이너를 배포하는 것을 보여준다. 또한, 호스트 디렉토리를 컨테이너 디렉토리에 매핑하기 위해 볼륨 바인딩을 사용하는 것을 알 수 있다. Pod를 사용하여 컨테이너를 그룹화하고 관리하는 방법을 강조하며, 내부 루프백 네트워크 연결을 제공한다. 사용자는 포트 8080/TCP를 통해 서비스에 접근할 수 있다.

profile
차곡 차곡 기록 쌓기

0개의 댓글