컨테이너 & podman

carlkim·2024년 1월 15일
0

WAS

목록 보기
5/12
post-thumbnail

컨테이너란?

컨테이너는 애플리케이션과 필요한 모든 파일을 하나의 런타임 환경으로 묶는 데 사용하는 기술입니다.

단일 구성 단위로서 컨테이너는 모든 컨텍스트의 모든 운영 체제에서 쉽게 이동 및 실행할 수 있습니다.

즉, 물류에서 사용하는 컨테이너 처럼 하나의 공간에 다양한 물건을 담아 옮기고, 각 서버에서 컨테이너를 구동해 그 안에 존재하는 어플리케이션을 별도의 설정 없이 쉽게 사용할 수 있습니다.

컨테이너의 장점

1. 가벼움
-- 가상머신의 경우 최소 os를 또 올려야하기 때문에
GB 단위이지만 컨테이너의 경우 MB 크기를 가진다.
2. 탄력성
-- 리눅스, 윈도우, 가상머신 등 어느 환경에서나 구동가능하여 배포가 쉽다.
3. 유지 관리 효율
영 체제 커널이 하나밖에 없기 때문에 운영 체제 수준에서 업데이트 또는 패치 작업을 한 번만 수행하면 변경 사항이 모든 컨테이너에 적용됩니다.

이를 통해 서버를 더 효율적으로 운영하고 유지 관리할 수 있습니다.

Podman이란?

Podman은 Pod Manager tool의 약자로 OCI 표준 컨테이너와 런타임 개발과 관리, 실행할 수 있게 해주는 컨테이너 엔진이다.
(문법 자체는 기존 표준인 도커를 따라가기 위해 크게 바뀐 점이 없다.)

Podman 과 Docker의 차이

1. 가장 큰 차이는 podman은 daemon이 필요없다는 점이다.

도커의 경우 도커 데몬 위에서 도커의 여러 작업이 이뤄진다.
사용자는 Docker Cli(ent) 명령어를 사용해 도커 데몬을 제어했다.

데몬을 통해 모든 서비스를 동작시키는 방식은 효율적이지만
도커 데몬이 죽거나 재시작되면 모든 컨테이너가 중지된다는 문제 발생한다.

때문에 PODMAN은 도커 데몬의 의도치 않은 중지 이슈 등을 해결하기 위해 각 컨테이너를데몬이 아닌 fork/exec 방식으로 실행해 별도로 구동한다.
결과적으로 데몬이 필요하지 않고 컨테이너를 더 안정적으로 실행할 수 있다.

2. root 권한 불필요

Docker는 오직 root 사용자만 docker cli(ent)를 제어할 수 있지만 podman은 일반 사용자도 가능하다.

때문에 시스템 운영자와 컨테이너 운영자 업무 분담이 가능하다.

3. Kubernetes 지원 유무

podman 대부분 명령어가 docker와 호환되는데
kubernetes는 docker가 지원하고 openshift는 podman이 지원한다.

아래 명령어로 k8s yaml 파일을 실행한다.

podman generate kube

서버 운영 측면에서 배포와 운영에 도커를 꼭 써야만 하는 건 아닙니다.
하지만 수평적 확장의 자유로움, 서버의 견고함을 보장하면서 동적으로 바꿀 수 있는 유연함, 인수인계 시간 절약 등의 편리한 해결 방법을 제공하는 도커를 쓰지 않을 이유는 없습니다.

profile
가장 나답게 문제해결.

0개의 댓글