11.6. Podman을 사용하여 systemd 장치 파일 자동 생성
기본적으로 Podman은 기존 컨테이너 또는 pod의 장치 파일을 생성합니다. podman generate
를 사용하여 더 많은 이식 가능한 systemd 장치 파일을 생성할 수 있습니다. systemd
--new--new
플래그는 Podman에 컨테이너를 생성, 시작 및 제거하는 단위 파일을 생성하도록 지시합니다.
Podman v4.6부터 일반 systemd
장치 파일과 유사한 형식으로 컨테이너를 실행하는 방법을 설명하고 systemd
에서 실행 중인 컨테이너의 복잡성을 숨길 수 있습니다.
사전 요구 사항
-
container-tools
meta-package가 설치되어 있습니다.
프로세스
시스템에서 사용할 이미지를 가져옵니다. 예를 들어
httpd-24
이미지를 가져오려면 다음을 수행합니다.podman pull registry.access.redhat.com/ubi10/httpd-24
# podman pull registry.access.redhat.com/ubi10/httpd-24
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항: 시스템에서 사용 가능한 모든 이미지를 나열합니다.
podman images
# podman images REPOSITORY TAG IMAGE ID CREATED SIZE registry.access.redhat.com/ubi10/httpd-24 latest 8594be0a0b57 2 weeks ago 462 MB
Copy to Clipboard Copied! Toggle word wrap Toggle overflow httpd
컨테이너를 생성합니다.podman create --name httpd -p 8080:8080 registry.access.redhat.com/ubi10/httpd-24
# podman create --name httpd -p 8080:8080 registry.access.redhat.com/ubi10/httpd-24 cdb9f981cf143021b1679599d860026b13a77187f75e46cc0eac85293710a4b1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항: 컨테이너가 생성되었는지 확인합니다.
podman ps -a
# podman ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cdb9f981cf14 registry.access.redhat.com/ubi10/httpd-24:latest /usr/bin/run-http... 5 minutes ago Created 0.0.0.0:8080->8080/tcp httpd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow httpd
컨테이너의systemd
장치 파일을 생성합니다.podman generate systemd --new --files --name httpd
# podman generate systemd --new --files --name httpd /root/container-httpd.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 생성된
container-httpd.service
systemd
장치의 콘텐츠를 표시합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
--new
옵션을 사용하여 생성된 단위 파일은 컨테이너와 Pod가 존재할 것으로 예상하지 않습니다. 따라서 podman start 명령 대신 서비스를 시작할 때 podman run
명령을 수행합니다( podman start
명령 대신 ExecStart
행 참조). 예를 들어 Podman을 사용하여 systemd 장치 파일 생성 섹션을 참조하십시오.
podman run
명령은 다음 명령줄 옵션을 사용합니다.-
--conmon-pidfile
옵션은 호스트에서 실행되는conmon
프로세스의 프로세스 ID를 저장할 경로를 가리킵니다.conmon
프로세스는 컨테이너와 동일한 종료 상태로 종료되므로systemd
가 올바른 서비스 상태를 보고하고 필요한 경우 컨테이너를 다시 시작할 수 있습니다. -
--cidfile
옵션은 컨테이너 ID를 저장하는 경로를 가리킵니다. -
%t
는 런타임 디렉터리 루트의 경로입니다(예:/run/user/$UserID
). %n
은 서비스의 전체 이름입니다.root 사용자로 설치하기 위해 장치 파일을
/etc/systemd/system
에 복사합니다.cp -Z container-httpd.service /etc/systemd/system
# cp -Z container-httpd.service /etc/systemd/system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow container-httpd.service
를 활성화하고 시작합니다.systemctl daemon-reload systemctl enable --now container-httpd.service
# systemctl daemon-reload # systemctl enable --now container-httpd.service Created symlink /etc/systemd/system/multi-user.target.wants/container-httpd.service
/etc/systemd/system/container-httpd.service. Created symlink /etc/systemd/system/default.target.wants/container-httpd.service /etc/systemd/system/container-httpd.service. Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
검증
container-httpd.service
의 상태를 확인합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow