# 보안 강화된 도커 대안, 'Podman' 탐구

> Clean Markdown view of GeekNews topic #12855. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=12855](https://news.hada.io/topic?id=12855)
- GeekNews Markdown: [https://news.hada.io/topic/12855.md](https://news.hada.io/topic/12855.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-01-14T21:36:28+09:00
- Updated: 2024-01-14T21:36:28+09:00
- Original source: [betterstack.com](https://betterstack.com/community/guides/scaling-docker/podman-vs-docker/)
- Points: 6
- Comments: 1

## Topic Body

### Podman 대 Docker 비교
- Podman과 Docker는 모두 효율적이고 확장 가능한 방식으로 컨테이너를 실행, 관리 및 배포할 수 있음.
- Podman은 데몬이 없는 아키텍처를 사용하여 사용자가 직접 컨테이너를 관리함.
- Podman은 Systemd와 통합되어 있어 컨테이너의 생명주기를 관리함.
- Docker Compose와 유사한 기능을 제공하는 Podman Compose를 사용하여 여러 컨테이너를 조정할 수 있음.
- 보안 측면에서 Podman은 Docker보다 강화된 기본 설정을 제공함.

### Podman 설치하기
- Podman은 macOS, Windows 및 주요 리눅스 배포판에서 실행 가능함.
- 리눅스에서는 네이티브로, Windows와 macOS에서는 가상 머신을 통해 작동함.
- 설치 과정은 `sudo apt update`와 `sudo apt install podman` 명령어를 통해 진행됨.

### 첫 번째 컨테이너 실행하기
- "Hello World!" 이미지를 사용하여 Podman 설치가 정상적으로 작동하는지 확인함.
- Podman은 OCI(Open Container Initiative) 표준을 따르므로 Docker 이미지와 호환됨.

### 짧은 이미지 이름 사용하기
- Podman은 이미지를 참조할 때 완전한 이름을 사용하도록 권장함.
- 짧은 이름을 사용할 경우, Podman은 설정 파일을 참조하여 정규화된 이미지 이름을 확인함.

### 개인 이미지 레지스트리 사용하기
- Podman은 Docker와 마찬가지로 개인 레지스트리와 함께 사용할 수 있음.
- Docker Hub 계정을 사용하여 개인 레지스트리 설정 예제를 따를 수 있음.

### 여러 컨테이너 조정하기
- Podman Compose를 사용하여 여러 컨테이너를 조정할 수 있음.
- Podman Compose는 Docker Compose와 유사한 기능을 제공하며, 기존의 docker-compose.yml 파일과 호환됨.

GN⁺의 의견:
- Podman은 Docker에 비해 더 빠르고 보안 측면에서 강화된 기본 설정을 제공하는 컨테이너 엔진임. 이는 개발자와 시스템 관리자에게 매력적인 대안이 될 수 있음.
- Podman의 데몬이 없는 아키텍처는 보안 감사 추적을 용이하게 하여 보안 사고 발생 시 사용자 식별을 가능하게 함.
- Podman과 Docker의 호환성은 기존 Docker 사용자들이 Podman으로의 전환을 쉽게 할 수 있도록 도와줌. 이는 기존 인프라와 워크플로우를 유지하면서 보안과 성능을 개선하고자 하는 조직에게 유용함.

## Comments



### Comment 22236

- Author: neo
- Created: 2024-01-14T21:36:29+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=38981844) 
- Podman과 systemd
  - Podman은 systemd 유닛 파일을 지원할 때 좋았음. 컨테이너와 포드를 자동으로 시작하고 업데이트할 수 있었음.
  - 그러나 Quadlet을 선호하면서 이 기능을 제거함. 이제 단일 컨테이너는 유닛 파일로 가능하지만, 포드를 위해서는 쿠버네티스 클러스터 정의가 필요함.
  - Docker와 달리 Podman의 컨테이너는 SELinux 정의에 따라 작동하여, 매핑된 디렉토리에 접근하지 못하는 문제가 반복됨.
  - Podman을 사용해야 하는지, 쿠버네티스를 사용해야 하는지, 논리적인 위치 대신 전용 디렉토리를 만들어야 하는지에 대한 혼란이 있음.

- Podman의 네트워크 호환성
  - Podman의 주요 장점 중 하나는 Docker와 달리 네트워크 설정을 망치지 않는다는 것임.
  - Docker를 사용할 때 KVM 가상 머신과 함께 브리지를 운영하는 것이 악몽이었지만, Podman은 기본적으로 잘 작동함.
  - VPN이 Docker에 의해 손상되거나 중단되는 문제도 있었지만, Podman의 네트워킹 방식은 아직까지 다른 작업에 방해가 되지 않음.

- Podman의 점점 증가하는 인기
  - 많은 도구들이 sudo docker 그룹을 추가하는 것을 가정하고 만들어졌지만, 보안을 의식한 Docker 설정에서는 문제가 발생함.
  - Podman은 루트 권한 없이도 사용할 수 있어 보안 면에서 긍정적임.

- RHEL 엔지니어의 Podman 사용 경험
  - 인증된 RHEL 엔지니어로서 개인적인 컨테이너 사용에 Podman을 즐겨 사용함.
  - 그러나 개발자들을 위해서는 여전히 Docker를 사용하고 있으며, Docker Compose의 단순함을 대체할 만한 것을 제공하지 못함.
  - CI 파이프라인에서는 Buildah를 사용하지만, 개발자 사용자를 위해서는 Docker Compose가 여전히 우세함.

- Docker와 UFW 보안 결함
  - Docker와 UFW 보안 결함에 거의 피해를 입을 뻔했음.

- 루트리스 컨테이너와 독립된 네임스페이스의 중요성
  - 루트리스 컨테이너와 독립된 네임스페이스는 중요한 보안 기능임.
  - Docker에서도 루트리스를 사용할 수 있으며, 설정이 복잡하지 않음.
  - Docker를 고수하는 이점은 접근성이 더 좋다는 것임: 더 많은 커뮤니티, 블로그, Docker Compose 설정의 넓은 이용 가능성, 사용 방법을 아는 동료 등이 있음.
  - 결국 Podman과 Docker 모두 호스트에서 독립된 네임스페이스에서 프로세스를 실행함.

- Red Hat의 Docker 대안, Podman
  - Red Hat이 Docker 대안을 만드는 이유는 명확하지 않지만, Podman이 마음에 듦.
  - Podman은 Docker가 하는 거의 모든 것을 할 수 있으며, 더 많은 기능을 가지고 있거나 (예: 포드), Podman의 방식이 더 나음 (예: 데몬 없는 컨테이너 생성 과정).
  - 개발자에게 주요 문제는 Docker Compose일 수 있으나, 간단한 Compose 파일을 사용한다면, Docker Compose 사양과 호환되려는 podman-compose 스크립트가 있음.
  - Podman을 Docker Compose의 백엔드로 사용하는 것도 가능함. 2024년 현재, 적어도 리눅스 상자에서는 Docker를 사용할 이유가 없어 보임. Podman이 macOS나 Windows에서 어떻게 작동하는지는 확실하지 않음.

- Podman의 보안 중심 접근 방식
  - Podman의 보안 중심 접근 방식과 일부 결정들이 마음에 듦. 기본적으로 안전한 기본 설정을 제공하며, Docker Compose와 호환됨.
  - Podman이 충분한 인기를 얻는다면, 명령어와 yml에 대해 독자적인 방향으로 나아갈 수도 있음. 현재는 Docker와 Docker Compose 파일 형식에 '의존하는' 도구처럼 보임.
  - Podman에는 k8s가 없는 오케스트레이션의 부족을 대체할 수 있는 swarm 대안이 필요함. 좋은 보안 관점에서 작은 규모의 컨테이너를 운영하는 간단하고 합리적인 방법을 제시할 수 있을 것임.

- Podman 사용 시 겪는 문제들
  - Podman은 훌륭하지만, Docker 대체제로 사용하기 시작했을 때 UID와 GID 매핑, SELINUX 정책, 누락된 DNS 설정 등으로 문제를 겪음.
  - 문제를 해결하기 위해 시스템 마이그레이션을 실행하다가 설정을 망친 적이 여러 번 있음. 보안 ACL, ID 매핑, 레이블에 대한 복잡한 문제가 있음.
  - 결과에 만족하지만, Docker처럼 '그냥 작동하는' 솔루션은 아니었음. 사용을 시작한 이후로 개선되었을 가능성이 있음.

- Podman과 Apple 실리콘
  - Podman은 Docker와 달리 Apple 실리콘에서 x86 이미지를 Rosetta를 통해 실행할 수 있는 기능이 없음.
  - QEMU는 실제 사용에는 너무 느림.
