컨테이너 시스템 유닛 생성
1) 컨테이너 생성
[admin@localhost ~]$ podman run -d --name web -p 8080:8080 -v ~/apps:/var/www/html:Z docker.io/centos/httpd-24-centos8 # web이름을 가지고 포트8080:8080을 가지고 html을 저장공간으로하는 컨테이너 생성 :Z옵션으로 자동으로 context 부여 bb3fb10b632f0aad5e172691c02d4308c68e307399f62cb175e5de3c45732c23 [admin@localhost ~]$ podman ps # 생성된 web 컨테이너 확인 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES bb3fb10b632f docker.io/centos/httpd-24-centos8:latest /usr/bin/run-http... 3 seconds ago Up 4 seconds 0.0.0.0:8080->8080/tcp web |
2) 컨테이너 서비스로 만들기
# --new: 컨테이너가 종료되면 제거되게하는 옵션 [admin@localhost ~]$ podman generate systemd --name web --new -------------------------------------------------------------- [Unit] Description=Podman container-web.service Documentation=man:podman-generate-systemd(1) -------------------------------------------------------------- [Service] Environment=PODMAN_SYSTEMD_UNIT=%n Restart=on-failure -------------------------------------------------------------- [Install] WantedBy=default.target -------------------------------------------------------------- # --files: 위의 생성한 명령어를 파일로 만들어준다. [admin@localhost ~]$ podman generate systemd --name web --new --files /home/admin/container-web.service |
3) loginctl 설정
[admin@localhost ~]$ loginctl show-user admin -------------------------------------------------------------- Linger=yes # Linger=yes를 설정하지 않으면 컨테이너가 SIGTERM 신호를 받으면 즉시 종료되기에 아직 실행 중인 프로세스가 종료되지 못하고 데이터 손실이나 시스템 장애가 발생할 수 있다. [admin@localhost ~]$ loginctl enable-linger |
4) 생성된 서비스 파일 실행
[admin@localhost ~]$ mkdir -p .config/systemd/user/ # .config/systemd/디렉토리 밑에 user 생성 [admin@localhost ~]$ mv container-web.service ./.config/systemd/user/ # 생성된 서비스 파일을 만든 디렉토리로 이동 [admin@localhost ~]$ podman stop web web [admin@localhost ~]$ podman rm web web [admin@localhost ~]$ podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES # ssh로 본인에게 접속하지 않으면 에러 발생 [admin@localhost ~]$ systemctl --user enable --now container-web.service Failed to connect to bus: No medium found # 생성한 컨테이너 서비스를 실행. admin으로 실행시키기 때문에 --user 사용 [admin@localhost ~]$ ssh admin@192.168.180.128 # 스위치 유저로는 명령이 안되기에 ssh로 접속 [admin@localhost ~]$ podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 89f9da73a286 docker.io/centos/httpd-24-centos8:latest /usr/bin/run-http... 4 seconds ago Up 5 seconds 0.0.0.0:8080->8080/tcp web [admin@localhost ~]$ systemctl --user status container-web.service # 생성한 서비스의 상태를 확인 -------------------------------------------------------------- container-web.service - Podman container-web.service Loaded: loaded (/home/admin/.config/systemd/user/container-web.service; enabled; preset: disabled) Active: active (running) since Fri 2023-06-09 11:04:06 KST; 26s ago -------------------------------------------------------------- |
5) 재부팅 이후 실행 확인
[admin@localhost ~]$ podman ps # 재부팅 이후에도 컨테이너가 실행 중이다. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 63f593c3a588 docker.io/centos/httpd-24-centos8:latest /usr/bin/run-http... 21 seconds ago Up 22 seconds 0.0.0.0:8080->8080/tcp web [admin@localhost ~]$ ssh admin@localhost # ssh로 접속해서 서비스가 실행 중인지 확인 [admin@localhost ~]$ systemctl --user status container-web.service ● container-web.service - Podman container-web.service Loaded: loaded (/home/admin/.config/systemd/user/container-web.service; en> Active: active (running) since Fri 2023-06-09 11:07:33 KST; 1min 31s ago |
'리눅스-podman > 실습' 카테고리의 다른 글
podman 실습 - mariadb 생성 및 설정 (0) | 2023.09.01 |
---|---|
podman 실습 - 레지스트리 등록과 이미지 사용 (0) | 2023.09.01 |
podman (1) | 2023.09.01 |