Skip to content

Latest commit

 

History

History
33 lines (12 loc) · 3.12 KB

Pod 과 Container.md

File metadata and controls

33 lines (12 loc) · 3.12 KB

Pod 과 Container

컨테이너는 애플리케이션을 실행하는 기본 단위입니다.

많은 애플리케이션은 단일 컨테이너로 구성될 수 없고, 여러 컨테이너가 협력하여 동작해야 하는 경우가 많습니다. 예를 들어, 웹 서버와 그와 연결된 데이터베이스, 캐시 서버 등이 함께 작동해야 할 때가 있습니다.

Pod는 이러한 여러 컨테이너를 하나의 단위로 묶어 관리할 수 있게 해줍니다. 컨테이너를 조합하여 복잡한 애플리케이션을 효과적으로 배포하고 운영할 수 있는 환경을 제공합니다. Pod 의 개념은 보통 Kubernetes에서 사용되지만, Podman에서도 사용됩니다.

Docker 같은 경우에는 Pod 의 개념을 사용하지 않기 때문에 기본적으로 각 컨테이너가 독립적인 네임스페이스를 가집니다. 즉, 각 컨테이너는 서로 다른 IP 주소를 가집니다. 이 경우 web 서비스는 db 서비스를 db:포트번호로 참조하여 통신할 수 있습니다. 예를 들어, docker-compose.yml 파일에 정의된 서비스가 webdb인 경우, web 서비스는 db 서비스를 db:포트번호로 참조하여 통신할 수 있습니다.

이렇게 각 컨테이너의 서비스는 독립적으로 실행되며, 각자의 파일 시스템프로세스 공간을 가집니다. 즉, 컨테이너는 서로 다른 볼륨을 가질 수 있으며, 서로 다른 IP 주소를 가지게 됩니다.

하지만 Podman 에서는 Pod 이라는 개념을 사용합니다. 별도의 설정 없이 Compose 파일에서 여러 컨테이너를 정의하면, Podman 에서는 기본적으로 컨테이너는 같은 Pod 내에 배치됩니다. 물론 설정에 따라 각 컨테이너를 별도의 Pod 에 배치할 수 있습니다.

동일한 Pods 내의 모든 컨테이너는 같은 IP 주소포트 공간을 공유합니다. 즉, 동일한 포트 번호를 사용하는 서비스가 있을 경우, 같은 Pod 내의 컨테이너는 충돌을 피하기 위해 각 컨테이너가 서로 다른 포트를 사용해야 합니다. 이를 통해 컨테이너 간의 통신을 더 쉽게 하고, 서로가 localhost를 통해 접근할 수 있게 합니다. 또한, 볼륨과 같은 저장 리소스를 공유하여 데이터 저장을 용이하게 합니다.

이렇듯 Pod는 여러 컨테이너를 함께 그룹화하여 네트워크와 저장소 리소스를 공유하고, 더 쉽게 관리할 수 있게 해주는 개념입니다.

Pod 을 사용하면 좋은 예시는 마이크로서비스 아키텍처를 들 수 있습니다. 예를 들어 사용자가 제품을 검색하는 웹 프론트엔드, 결제를 처리하는 서비스, 재고를 관리하는 서비스 등 여러 마이크로 서비스가 각각의 Pod로 배포될 수 있습니다. 각각의 서비스가 독립적으로 배포되고, 필요에 따라 스케일링할 수 있습니다.

podman pod ps 로 어떤 pod 이 실행 중인지, podman ps -a --pod 을 통해 어떤 컨테이너가 어떤 pod 에 연결 되어있는지 확인 할 수 있습니다.

출처 - Chat GPT