포드맨 시작하기
Podman은 libpod 라이브러리의 일부로 제공되는 유틸리티입니다. 컨테이너를 만들고 유지 관리하는 데 사용할 수 있습니다. 다음 자습서에서는 Podman을 설정하고 몇 가지 기본 명령을 수행하는 방법을 알려줍니다.
CentOS 8 설치 시 podman을 기본 라이브러리로 포함하고 있습니다.
Podman에 익숙해지기
코드 샘플은 root가 아닌 사용자로 실행하기 위한 것이며 sudo권한을 필요로 합니다..
도움을 받다
도움을 받고 Podman이 어떻게 작동하는지 알아보려면 다음 도움말 을 사용할 수 있습니다 .
$ podman --help
$ podman <subcommand> --help
자세한 내용은 맨페이지를 참조하십시오.
$ man podman
$ man podman-<subcommand>
이미지 검색, 가져오기 및 나열
Podman은 몇 가지 간단한 키워드로 원격 레지스트리에서 이미지를 검색할 수 있습니다.
$ podman search <search_term>
필터를 사용하여 검색을 향상시킬 수도 있습니다.
$ podman search httpd --filter=is-official
이미지 다운로드(Pulling)도 쉽습니다.
$ podman pull docker.io/library/httpd
일부 이미지를 가져온 후 컴퓨터에 있는 모든 이미지를 나열할 수 있습니다.
$ podman images
참고 : Podman은 다른 레지스트리에서 검색합니다. 따라서 전체 이미지 이름( httpd 대신 docker.io/library/httpd )을 사용하여 올바른 이미지를 사용하고 있는지 확인하는 것이 좋습니다.
컨테이너 실행
이 샘플 컨테이너는 인덱스 페이지만 제공하는 매우 기본적인 httpd 서버를 실행합니다.
$ podman run -dt -p 8080:80/tcp docker.io/library/httpd
참고 : 컨테이너가 분리 모드에서 실행되고 있기 때문에 명령에 표시된 대로 Podman -d은 podman run명령을 실행한 후 컨테이너 ID를 인쇄합니다. 또한 -t대화형 셸에서 임의의 명령을 실행하기 위해 pseudo-tty를 추가합니다.
참고 : HTTP 서버에 액세스할 수 있도록 포트 포워딩을 사용합니다. 성공적인 실행을 위해서는 최소한 slirp4netns v0.3.0이 필요합니다.
실행 중인 컨테이너 나열
이 podman ps명령은 생성 및 실행 중인 컨테이너를 나열하는 데 사용됩니다.
$ podman ps
참고 : podman ps -a 은 모든 컨테이너(생성, 종료, 실행 등)를 표시합니다.
httpd 컨테이너 테스트
보시다시피 컨테이너에는 할당된 IP 주소가 없습니다. 컨테이너는 로컬 컴퓨터에 게시된 포트를 통해 연결할 수 있습니다.
$ curl http://localhost:8080
다른 머신에서 컨테이너를 실행하는 호스트의 IP 주소를 사용해야 합니다.
$ curl http://<IP_Address>:8080
참고 : curl을 사용하는 대신 브라우저에서 http://localhost:8080 으로 확인할 수도 있습니다 .
실행 중인 컨테이너 검사
실행 중인 컨테이너에 대한 메타데이터 및 세부 정보를 "검사"할 수 있습니다. podman inspect환경 변수, 네트워크 설정 또는 할당된 리소스와 같은 유용한 정보를 많이 제공합니다.
컨테이너가 루트리스 모드로 실행 중이므로 컨테이너에 IP 주소가 할당되지 않습니다.
$ podman inspect -l | grep IPAddress
"IPAddress": "",
참고 : 최신 컨테이너-l 에 대한 편의 인수입니다 . 또는 long 인수 대신 컨테이너의 ID 또는 이름을 사용할 수도 있습니다 .-l--latest
참고 : Mac 및 Windows(WSL2 제외) 시스템을 포함한 원격 Podman 클라이언트를 실행 중인 경우 -l옵션을 사용할 수 없습니다.
컨테이너의 로그 보기
Podman을 사용하여 컨테이너의 로그도 볼 수 있습니다.
$ podman logs -l
127.0.0.1 - - [04/May/2020:08:33:48 +0000] "GET / HTTP/1.1" 200 45
127.0.0.1 - - [04/May/2020:08:33:50 +0000] "GET / HTTP/1.1" 200 45
127.0.0.1 - - [04/May/2020:08:33:51 +0000] "GET / HTTP/1.1" 200 45
127.0.0.1 - - [04/May/2020:08:33:51 +0000] "GET / HTTP/1.1" 200 45
127.0.0.1 - - [04/May/2020:08:33:52 +0000] "GET / HTTP/1.1" 200 45
127.0.0.1 - - [04/May/2020:08:33:52 +0000] "GET / HTTP/1.1" 200 45
컨테이너의 pid 보기
를 사용하여 컨테이너에서 httpd pid를 관찰할 수 있습니다 podman top.
$ podman top -l
USER PID PPID %CPU ELAPSED TTY TIME COMMAND
root 1 0 0.000 22m13.33281018s pts/0 0s httpd -DFOREGROUND
daemon 3 1 0.000 22m13.333132179s pts/0 0s httpd -DFOREGROUND
daemon 4 1 0.000 22m13.333276305s pts/0 0s httpd -DFOREGROUND
daemon 5 1 0.000 22m13.333818476s pts/0 0s httpd -DFOREGROUND
컨테이너 중지
컨테이너를 중지할 수 있습니다.
$ podman stop -l
podman ps 명령 을 사용하여 하나 이상의 컨테이너 상태를 확인할 수 있습니다 . 이 경우 -a인수를 사용하여 모든 컨테이너를 나열해야 합니다.
$ podman ps -a
컨테이너 제거
마지막으로 컨테이너를 제거할 수 있습니다.
$ podman rm -l
실행하여 컨테이너 삭제를 확인할 수 있습니다 podman ps -a.
체크포인트, 마이그레이션 및 컨테이너 복원
컨테이너를 검사점으로 지정하면 컨테이너에 있는 모든 프로세스의 상태를 디스크에 쓰는 동안 컨테이너가 중지됩니다. 이를 통해 컨테이너는 나중에 마이그레이션 및 복원되어 체크포인트와 정확히 동일한 시점에 실행될 수 있습니다. 자세한 내용은 체크포인트 지침 을 참조하세요 .