- Podman은 데몬이 없고 OCI와 호환되며, 강화된 보안으로 루트 없는 작업이 가능합니다.
- UBI, Buildah, Skopeo는 이미지를 구축, 서명, 배포하기 위한 견고한 스택을 형성합니다.
- Pod, Kubernetes YAML 및 systemd 단위를 사용하면 로컬 배포에서 안정적인 배포로 쉽게 이동할 수 있습니다.
당신의 목표가 출시라면 가벼운 용기 Linux 최고의 보안과 제어 기능을 갖춘 Podman은 최고의 선택 중 하나입니다. OCI 생태계를 공유하고, Docker 사용자에게 매우 친숙한 CLI를 제공하며, 무엇보다도 중앙 데몬을 제거하여 공격 표면과 리소스 소비를 줄입니다.
이 실용적이고 심층적인 투어는 가장 관련성 있는 내용을 모아 놓았습니다. Red Hat, SUSE 및 관련 도구에 대한 가이드 Buildah 및 Skopeo와 같은 도구를 활용합니다. 컨테이너와 포드를 설치, 구성 및 운영하고, 효율적인 이미지(UBI 포함)를 생성하고, Kubernetes 또는 systemd 단위를 위한 YAML 파일을 생성하는 방법을 배우고, 그 과정에서 로그, 신뢰 정책, 상태 확인 및 이벤트를 쉽게 탐색하는 방법을 익힙니다.
Podman이란 무엇이고, 왜 경량 컨테이너로 유명한가요?
포드만은 데몬리스 컨테이너 엔진 OCI 사양을 준수하며 Docker와 거의 동일한 구문으로 이미지와 컨테이너를 실행, 빌드 및 관리할 수 있습니다. 가장 큰 차이점은 아키텍처입니다. 마스터 프로세스가 없습니다. 뿌리 요청을 보낼 수 있는 백그라운드가 있어 보안과 운영 모델이 간소화됩니다.
또 다른 핵심 자산은 지원입니다. 뿌리가 없는: 권한이 없는 사용자는 권한을 승격하지 않고도 컨테이너를 생성하고 실행할 수 있습니다. 이는 보안을 강화할 뿐만 아니라, 작업이 루트로 실행되는 데몬이 아닌 실제 시스템 사용자와 연결되므로 추적성도 향상됩니다.
Docker CLI 지원은 매우 정교합니다. 명령 으로 포드맨 빌드, 포드 맨 런 o 포드맨 이미지 거의 동일합니다. Docker를 실행하면 Podman이 투명하게 호출되도록 별칭을 생성하는 podman-docker 패키지도 있는데, 이는 레거시 스크립트가 있을 때 유용합니다.
Podman은 다음 개념을 채택합니다. 포드 쿠버네티스: 네트워크와 특정 네임스페이스를 공유하는 여러 컨테이너를 그룹화합니다. 협력 서비스(예: 데이터베이스와 클라이언트)를 구성하고 YAML을 사용하여 쿠버네티스에 대한 이식 가능한 설명을 생성하는 데 이상적입니다. Docker를 Kubernetes에 통합.
기업 생태계에서 Red Hat은 다음을 대체했습니다. 도커 엔진 Podman, Buildah, Skopeo 기반 데몬리스 스택을 위한 RHEL 8. 또한 다음을 촉진합니다. UBI 이미지 구독 잠금 없이 고품질 RHEL 기반을 구축하기 위한 재배포 가능 패키지입니다.
배포별 설치 및 요구 사항

RHEL 8 및 파생 버전에서는 모듈을 활성화하는 것이 가장 편리합니다. 컨테이너 도구Podman, Buildah, Skopeo를 지원합니다. 시스템을 등록한 후, 해당되는 경우 사용 가능한 모듈을 설치하면 컨테이너와 통합된 방식으로 작동할 수 있는 패키지가 준비됩니다.
Fedora에서는 패키지가 저장소에 있으며 일반적인 패키지 관리자를 통해 설치됩니다. Ubuntu (20.04 이상) 표준 저장소에서 APT로 설치하거나 안정적인 libcontainers PPA를 추가하여 최신 상태로 유지할 수 있습니다. 슬레마이크로Podman은 기본으로 제공되며, 없는 경우 공식 SUSE 설명서를 따라 추가할 수 있습니다.
환경을 확인하세요 포드맨 정보 자세한 내용을 보려면 저장, cgroups, 루트리스 호환성 및 플러그인. A 부팅 빠르고 가벼운 네트워크 및 DNS 검사기는 간단한 Alpine 컨테이너를 대화형으로 실행하는 것으로 구성됩니다. 포드맨 실행 –rm -it 알파인 sh.
보호된 Red Hat 이미지를 컴파일하거나 사용할 계획이라면(예: 레지스트리.redhat.io), 당신이 필요하다는 것을 기억하십시오 인증 유효한 포털 자격 증명을 사용하는 동안 레지스트리.액세스.레드햇닷컴 카탈로그의 일부에 대한 인증되지 않은 액세스를 제공합니다.
루트리스 모드에서 작업: 구성 및 실제적 한계
루트리스 모드는 Podman의 가장 흥미로운 기능 중 하나입니다. 이 기능을 제대로 활성화하려면 다음을 설정해야 합니다. 사용자 네임스페이스 subuid 및 subgid 맵도 있습니다. 이전 시스템이나 기존 계정을 사용 중이시라면 파일을 확인해 보세요. /etc/subuid y /etc/subgid 각 사용자에게 충분한 범위를 할당합니다.
순서 포드맨 공유 취소 사용자 네임스페이스를 입력하고 유효한 UID 및 GID 매핑을 확인할 수 있습니다. 이는 루트리스 컨테이너가 특정 파일에 액세스할 수 없는 이유나 해당 사용자로 인해 원격 볼륨이 실패하는 이유를 진단하는 데 유용합니다.
중요한 제한 사항이 있습니다. 루트 없는 모드의 컨테이너는 1024보다 작은 포트를 열어두세요개발 시나리오에서는 커널 매개변수를 변경하여 권한이 없는 하위 포트를 활성화하거나 호스트에서 포트 포워딩을 사용하여 권한을 높이지 않고도 80 또는 443에 액세스할 수 있습니다.
또한 글로벌 권한이 필요한 서비스도 있습니다. 시스템 시간 설정루트가 없는 컨테이너 내에서 ntpd를 실행하고 부적절한 권한을 부여하면 호스트에 영향을 미칠 수 있습니다. 이러한 데몬을 시스템에 유지하거나 적절한 제한이 있는 포드/서비스를 사용하는 것이 좋습니다.
운영 세부 사항: 루트 없는 컨테이너 저장소는 다음 위치에 있어야 합니다. 로컬 파일 시스템원격 마운트는 종종 사용자 네임스페이스 문제를 일으킵니다. 또한 사용자 인증이 다음에서 제공되는 경우 LDAP 또는 Active Directory매핑이 제대로 작동하려면 정적 subuid 및 subgid 범위를 로컬로 유지해야 합니다.
로그의 검색, 추출 및 신뢰 정책
Podman은 기본적으로 다음에 나열된 로그를 쿼리합니다. /etc/containers/registries.conf루트로서 시스템 설정을 수정할 수 있으며 권한이 없는 사용자로서 자신의 파일을 만들어서 이를 재정의할 수 있습니다. $HOME/.config/containers/registries.conf 세션에서 우선순위를 조정하고, 미러링하거나, 안전하지 않은 레코드를 표시합니다.
이미지를 찾으려면 다음을 사용하세요. 포드맨 검색. 정의된 모든 레코드를 검색하거나 도메인별로 제한할 수 있으며, 완전한 결과가 필요한 경우 추가할 수 있습니다. –no-trunc목록에 자격 증명이 필요한 경우 먼저 로그인하여 목록에 접근 가능한 개인 저장소가 표시되도록 하세요.
La 신뢰 정책 이미지 서명을 확인할 수 있습니다. 이는 다음에 정의되어 있습니다. /etc/containers/policy.json 그리고 YAML에서 /etc/containers/registries.d/Red Hat은 이미지에 대한 서명을 게시합니다. registry.access.redhat.com 및 registry.redhat.io에 대한 특정 섹션을 추가하여 시스템이 가져올 때 참조해야 하는 sigstore URL을 지정할 수 있습니다.
기본 정책을 변경하는 경우 거부, 서명되었거나 명시적으로 허용된 범위에서만 가져올 수 있습니다. 이는 빌드 서버 또는 규제된 환경을 강화하는 데 유용합니다. 정책 JSON을 표시하고 다음을 사용하여 테스트하여 활성 정책을 확인할 수 있습니다. 유비8-미니멀 풀링 중에 서명이 어떻게 검증되는지 확인하세요.
이름을 사용하는 것이 좋습니다. 완전히 자격을 갖춘 가져올 때 레지스트리, 네임스페이스, 저장소, 태그를 지정하세요. 짧은 이름 스푸핑을 방지하고 동시에 스크립트에서 각 이미지의 출처를 더 잘 문서화할 수 있습니다.
Buildah를 활용한 UBI 기반 이미지 및 구축
라스 UBI(Universal Base Images) RHEL 8은 무료 재배포 라이선스가 적용된 공식 기반입니다. Standard, Minimal, init 플레이버와 각 언어에 대한 런타임 이미지(예: Python, PHP, Ruby 또는 Node.js). 목표는 고품질 RHEL 기반에서 애플리케이션을 빌드하고 대상에서 구독에 묶이지 않고 배포할 수 있도록 하는 것입니다.
사진 유비8 표준은 대부분의 시나리오에 적합한 강력한 도구 세트를 제공합니다. 반면, 유비8-미니멀 크기를 최소한으로 줄이고 필수품만 포함하세요. 다음과 같은 패키지를 추가할 수 있습니다. 마이크로엔프 빌드하는 동안 추가 종속성이 필요한 경우.
변형 유비8-이니트 systemd를 PID 1로 통합하고 설정합니다. 정지 신호 systemd는 일반적인 종료 신호를 무시하기 때문에 특별합니다. 이는 컨테이너 내부에서 systemd가 관리하는 서비스를 기존 머신보다 더 충실하게 실행하려는 경우 유용합니다.
구독된 RHEL 호스트에서 표준 UBI 컨테이너는 호스트 저장소와 UBI 저장소를 모두 볼 수 있으므로 전체 패키지 카탈로그결과 이미지를 재배포 가능하게 하려면 빌드할 때 UBI가 아닌 저장소를 비활성화하여 자유롭게 배포되는 RPM만 포함되도록 하세요.
건설하려면, 빌다 Dockerfile을 사용하여 두 가지 경로를 제공합니다. 빌드아 버드또는 작업 컨테이너를 생성하고 파일 시스템을 마운트하고 파일을 복사하고 구성을 실행하여 보다 세부적인 방식으로 수행할 수 있습니다. buildah 설정. 과 유비8-미니멀 yum 대신 microdnf를 사용하는 것을 잊지 마세요.
Podman을 사용하여 컨테이너 및 이미지 작동
한 번만 실행하려면 다음을 사용하여 짧은 명령을 실행할 수 있습니다. 포드맨 실행 –rm예를 들어, 이미지의 기본 시스템을 보는 경우 고양이 /etc/os-릴리즈 또는 대화형 bash 셸을 열어 컨테이너 내용을 조사하고 지속성 없이 테스트를 수행합니다.
검사는 매우 완벽합니다. 포드맨 검사 컨테이너와 이미지의 메타데이터를 볼 수 있습니다. 형식 다음과 같은 특정 필드를 얻기 위한 출력 네트워크 설정.IP 주소, .Config.노출된 포트 O 엘 State.Pid 프로세스의.
이미 있는 컨테이너에 들어가야 하는 경우 행동, 사용 포드맨 임원 셸을 사용하면 메인 프로세스를 방해하지 않습니다. 이는 트래픽을 처리하거나 작업을 처리하는 동안 애플리케이션이 실제로 수행하는 작업을 관찰하는 데 이상적입니다.
데이터를 지속하고 공유하기 위해 Podman은 다음을 지원합니다. 볼륨볼륨을 생성하고 컨테이너에 마운트하면 컨테이너를 삭제했다가 다시 생성하더라도 파일을 유지할 수 있습니다. prune 명령으로 실수로 삭제되는 것을 방지하려면 내부 호스트 경로보다는 볼륨 이름으로 마운트하는 것이 가장 좋습니다.
이미지와 컨테이너는 다음을 통해 관리됩니다. 포드맨 이미지, 포드만 RMI, 포드맨 ps, 포드만 rm 및 회사. 기계 간에 이미지를 이동하려면 다음을 사용하여 저장하세요. 포드맨 저장 타르에 넣고 다시 로드하세요 포드만 로드부부 가져 오기 / 내보내기 특정 컨테이너의 파일 시스템을 캡처하려는 경우에도 존재합니다.
Kubernetes를 위한 Pod 및 YAML 생성
Un 포드 컨테이너를 그룹화하고 해당 네임스페이스를 유지하는 인프라 컨테이너를 제공합니다. 다음을 사용하여 컨테이너를 만들 수 있습니다. 포드맨 포드 크리에이트, 목록으로 포드맨 포드 ps 그리고 컨테이너를 내부에 두고 실행하세요 -현물 상환 지불이는 여러 부품이 협력하여 배포를 설정하는 자연스러운 방법입니다.
원하는 대로 포드를 정의한 후 해당 포드의 매니페스트를 생성할 수 있습니다. Kubernetes 와 포드맨이 큐브를 생성합니다포드와 컨테이너를 설명하는 이식 가능한 YAML 파일이 생성됩니다. 나중에 다음 명령어를 사용하여 동일한 호스트에서 해당 세트를 다시 생성할 수 있습니다. 포드맨 플레이 큐브 또는 클러스터로 가져가세요 쿠 베틀 u oc.
세대는 볼륨을 반영하지 않는다는 점을 명심하세요. LVM 호스트의 세부 사항도 아니고 스토리지 고급형입니다. 이를 사용하는 경우 해당 요구 사항을 별도로 문서화하거나 Orchestrator에서 동등한 저장 객체를 생성하세요.
OpenShift에서는 다음을 사용할 수 있습니다. oc 생성 이미지에서 리소스 YAML을 빌드하고 제어된 방식으로 게시하기 위한 드라이런 플래그를 사용합니다. Kubernetes에서는 다음과 매우 유사한 작업이 수행됩니다. kubectl 생성.
로컬에서 포드를 사용하면 속도가 빨라집니다. 생산으로 이동토폴로지는 이미 포드와 컨테이너 측면에서 고려되었고, YAML 파일은 개발과 운영 간의 계약 역할을 하기 때문입니다.
Systemd 통합: 컨테이너 및 Pod 서비스
Podman은 다음과 아름답게 통합됩니다. 시스템. 과 podman이 systemd를 생성합니다 기존 컨테이너 또는 포드에 대한 단위를 생성하거나 다음을 사용하여 휴대용 정의를 생성합니다. -새로운 컨테이너가 없으면 컨테이너를 빌드하고 시작하고, 서비스가 중지되면 컨테이너를 삭제합니다.
단위는 다음과 같습니다. 사용자 (시 $HOME/.config/systemd/사용자) 또는 체계 (시 /etc/systemd/시스템 o /usr/lib/systemd/시스템). 사용자 서비스의 경우 다음을 활성화하세요. systemctl –사용자 로그아웃 후에도 지속되게 하려면 사용자 지연 시작을 조정하는 것을 잊지 마세요.
여러 개의 컨테이너가 있는 포드를 관리하는 경우 다음에 집중하세요. 포드 서비스 그리고 systemctl을 사용하여 내부 컨테이너를 별도로 시작하거나 중지하지 마세요. 이는 인프라 컨테이너와 함께 포드 서비스에 의해 조정되기 때문입니다.
다음과 같은 옵션을 확인하세요. –재시작 정책 컨테이너 서비스가 시작 시와 장애 발생 시 자동으로 시작될 수 있도록 합니다. 이는 Linux에서 잘 알려진 서비스 단위 의미론을 적용한 간단한 로컬 오케스트레이션 방식입니다.
팁: Podman을 업데이트할 때 단위 파일을 다시 생성하세요. 템플릿이 진화하고 podman이 systemd를 생성합니다 권장 정책의 최신 버전을 제공합니다.
Skopeo Tools, Buildah 및 Toolbox
스코페오 전체 이미지를 다운로드하지 않고도 원격 레지스트리의 이미지를 검사하고, 스토리지 백엔드 간에 이미지를 복사하고, 서명할 수 있습니다. 이미지 메타데이터 감사 및 저장소 동기화에 적합하며, 동일 호스트에서 실행될 때 Podman 및 Buildah와 인증 파일을 공유합니다.
Skopeo를 실행하면 컨테이너, 마운트하다 인증 파일 적절한 옵션을 사용하여 호스트에서 가져오거나 컨테이너에 다시 로그인하세요. 로컬 저장소에 나열하거나 복사하려면 사용자 또는 시스템 컨테이너 저장소 경로도 적절하게 마운트하세요.
빌다 OCI 이미지를 처음부터, Dockerfiles에서 또는 실행 중인 컨테이너에서 빌드하는 과정을 간소화합니다. 동일한 로컬 스토리지를 공유하므로 Podman이나 Buildah로 가져온 이미지를 언제든 사용할 수 있습니다. 작업 중인 컨테이너의 파일 시스템을 마운트하고, 파일을 복사하고, 변경 사항을 커밋할 수 있습니다. 빌드아 커밋.
유용성이 있습니다 도구 상자 그리고 이미지 지원 도구 호스트 진단을 위해 권한이 있는 컨테이너를 엽니다. 시스템 파일 시스템을 마운트합니다. /주최자 다음과 같은 도구를 실행할 수 있습니다. 소스 보고서 또는 기본 시스템을 손상시키지 않고 호스트 프로세스에 대해 gcore를 적용할 수 있습니다.
일부 Red Hat 이미지에는 다음이 포함됩니다. 런라벨 설치, 실행 또는 제거 준비가 된 명령을 정의합니다. 포드맨 컨테이너 런레이블 rsyslog나 support-tools와 같은 이미지에서 이러한 태그를 호출하면 적절한 권한과 마운트를 통해 배포를 간소화할 수 있습니다.
상태 점검, 시스템 정보 및 이벤트
롯 건강 검진 컨테이너 내부 프로세스가 정상 상태인지 또는 준비 상태인지 확인하는 데 사용됩니다. 실행할 명령과 간격, 재시도 횟수, 시간 초과, 시작 시 유예 기간 등의 매개변수로 정의됩니다. 컨테이너 내부에서 작동하므로 애플리케이션에 대한 지식을 바탕으로 검사를 설계해야 합니다.
수동으로 실행하려면 check 명령을 사용하여 최신 상태와 해당 상태를 확인할 수 있습니다. 종료 코드; 0은 성공을 의미합니다. 이는 프로브가 컨테이너를 비정상으로 표시할 때 디버깅하는 데 유용한 방법입니다.
와 포드만 시스템 저장소, 버전, cgroups 지원, 런타임, 구성 등 전역 환경 정보를 확인할 수 있습니다. 권한, cgroups 또는 커널 호환성 문제가 의심될 때 매우 유용합니다.
마지막으로, 포드만 이벤트 컨테이너 생성, 시작 및 종료, Pod 변경, 이미지 작업, 시스템 및 볼륨 이벤트 등 현재 상황을 모니터링할 수 있습니다. 각 이벤트에는 타임스탬프, 유형, 상태 및 이름이 포함되어 있어 이상 동작을 추적하는 데 유용합니다.
위의 모든 것을 사용하면 다음을 수행할 수 있습니다. 정말 가벼운 용기를 만들어 보세요 Linux에서 Podman으로 효과적으로 제어하세요. 좋아하는 배포판에 설치하고, 루트리스를 현명하게 사용하고, 필요할 때 UBI를 가져오고, Buildah로 빌드하고, Skopeo와 검사하고 동기화하고, Pod에서 서비스를 구성하고, Kubernetes용 YAML을 생성하고, systemd와 통합하고, 보안을 유지하면서 상태와 이벤트를 모니터링하세요.
바이트와 기술 전반에 관한 세계에 대한 열정적인 작가입니다. 나는 글쓰기를 통해 내 지식을 공유하는 것을 좋아하며 이것이 바로 이 블로그에서 할 일이며 가젯, 소프트웨어, 하드웨어, 기술 동향 등에 관한 가장 흥미로운 모든 것을 보여 드리겠습니다. 제 목표는 여러분이 간단하고 재미있는 방식으로 디지털 세계를 탐색할 수 있도록 돕는 것입니다.


