11.7. systemd를 사용하여 Pod 자동 시작
systemd
서비스로 여러 컨테이너를 시작할 수 있습니다. systemctl
명령은 pod에서만 사용해야 하며 내부 infra-container와 함께 pod 서비스에서 관리하므로 systemctl
을 통해 컨테이너를 개별적으로 시작하거나 중지해서는 안 됩니다.
Podman v4.6부터 일반 systemd
장치 파일과 유사한 형식으로 컨테이너를 실행하는 방법을 설명하고 systemd
에서 실행 중인 컨테이너의 복잡성을 숨길 수 있습니다.
사전 요구 사항
-
container-tools
meta-package가 설치되어 있습니다.
프로세스
빈 Pod를 생성합니다(예:
systemd-pod
).podman pod create --name systemd-pod
$ podman pod create --name systemd-pod 11d4646ba41b1fffa51c108cbdf97cfab3213f7bd9b3e1ca52fe81b90fed5577
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항: 모든 Pod를 나열합니다.
podman pod ps
$ podman pod ps POD ID NAME STATUS CREATED # OF CONTAINERS INFRA ID 11d4646ba41b systemd-pod Created 40 seconds ago 1 8a428b257111 11d4646ba41b1fffa51c108cbdf97cfab3213f7bd9b3e1ca52fe81b90fed5577
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 빈 포드에 두 개의 컨테이너를 생성합니다. 예를 들어
systemd-pod
에서container0
및container1
을 생성하려면 다음을 수행합니다.*podman create --pod systemd-pod --name container0 registry.access.redhat.com/ubi*10 top *podman create --pod systemd-pod --name container1 registry.access.redhat.com/ubi*10 top
$ *podman create --pod systemd-pod --name container0 registry.access.redhat.com/ubi*10 top $ *podman create --pod systemd-pod --name container1 registry.access.redhat.com/ubi*10 top
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항: 연결된 모든 Pod 및 컨테이너를 나열합니다.
podman ps -a --pod
$ podman ps -a --pod CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES POD ID PODNAME 24666f47d9b2 registry.access.redhat.com/ubi10:latest top 3 minutes ago Created container0 3130f724e229 systemd-pod 56eb1bf0cdfe k8s.gcr.io/pause:3.2 4 minutes ago Created 3130f724e229-infra 3130f724e229 systemd-pod 62118d170e43 registry.access.redhat.com/ubi10:latest top 3 seconds ago Created container1 3130f724e229 systemd-pod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 새 포드에 대한
systemd
장치 파일을 생성합니다.podman generate systemd --files --name systemd-pod
$ podman generate systemd --files --name systemd-pod /home/user1/pod-systemd-pod.service /home/user1/container-container0.service /home/user1/container-container1.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemd
장치 파일 세 개가 생성됩니다. 하나는systemd-pod
포드용이고 컨테이너container0
및container1
용 2개입니다.pod-systemd-pod.service
장치 파일을 표시합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
[Unit]
섹션의Requires
행은container-container0.service
및container-container1.service
유닛 파일에 대한 종속성을 정의합니다. 두 유닛 파일이 모두 활성화됩니다. -
[Service]
섹션의ExecStart
및ExecStop
행은 각각 infra-container를 시작하고 중지합니다.
-
container-container0.service
장치 파일을 표시합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
[Unit]
섹션의BindsTo
줄은pod-systemd-pod.service
장치 파일에 대한 종속성을 정의합니다. -
[Service]
섹션의ExecStart
및ExecStop
행은 각각container0
을 시작하고 중지합니다.
-
container-container1.service
장치 파일을 표시합니다.cat container-container1.service
$ cat container-container1.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 생성된 모든 파일을 루트가 아닌 사용자로 설치하기 위해
$HOME/.config/systemd/user
에 복사합니다.cp pod-systemd-pod.service container-container0.service container-container1.service $HOME/.config/systemd/user
$ cp pod-systemd-pod.service container-container0.service container-container1.service $HOME/.config/systemd/user
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 서비스를 활성화하고 사용자 로그인 시 시작합니다.
systemctl enable --user pod-systemd-pod.service
$ systemctl enable --user pod-systemd-pod.service Created symlink /home/user1/.config/systemd/user/multi-user.target.wants/pod-systemd-pod.service
/home/user1/.config/systemd/user/pod-systemd-pod.service. Created symlink /home/user1/.config/systemd/user/default.target.wants/pod-systemd-pod.service /home/user1/.config/systemd/user/pod-systemd-pod.service. Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 서비스는 사용자 로그아웃 시 중지됩니다.
검증
서비스가 활성화되어 있는지 확인합니다.
systemctl is-enabled pod-systemd-pod.service
$ systemctl is-enabled pod-systemd-pod.service enabled
Copy to Clipboard Copied! Toggle word wrap Toggle overflow