티스토리 뷰
- 컨테이너 하면 Docker 가 떠오르시겠지만 RHEL에서는 PODMAN을 밀고 있습니다!
설명은 나중에 하고 RHCSA8 기출문제 에서 가장 난도 높아 많이들 어려워하시는
그리고 NOPASS에서 가장 주범이라고 들 하시는 분들이 계신 거 같아 몇 가지 언급하고자 포스팅합니다.
제가 1월에 RHCSA9 시험을 한 번 응시했다가 떨어졌는데요.
Root 에서는 podman 관련 명령어 아무 이상 없이 작동하는데, 일반 유저 에서는 podman 명령어 입력 시 오류가 나면서 안 되더라구요.
컨테이너 부분을 가장 신경써서(RH199 guide 기준) 준비하고 갔는데, 명령어 자체가 안 먹어 버리니 멘붕이 오더라구요.
오류 내용은 정신이 없어서 기억하지 못 하지만, 제가 놓친 부분이 있을까요?
그리고 컨테이너 관련 2문제가 나왔는데,
첫 번째는 Root로 build 해서 이미지 생성하는 것이고
두 번째는 앞에서 생성한 이미지로 Rootless 컨테이너 생성 및 systemd 등록 이었는데
애초에 Root로 build 한 이미지가 일반 유저 상태에서는 안 보이잖아요? (podman images)
문제의 의도는 무엇일까요?
위와 같은 댓글로 문의를 주셔서...
' ROOT로 build 해서 이미지 생성 과정'
' Rootless 컨테이너 생성 후 systemd 등록과 일반 유저 관련 '
이렇게 두 개 작성 해볼게요요
PODMAN 심화! RHCSA8 기출에 중요한 문제예요 ~~
Rootless 컨테이너 실행
' 컨테이너 호스트에서 root 사용자 또는 권한이 없는 일반 사용자로 컨테이너를 실행할 수 있습니다.
권한이 없는 사용자가 실행하는 컨테이너를 rootless 컨테이너라고 합니다.
Rootless 컨테이너는 더 안전하지만 몇 가지 제한 사항이 있습니다.
예를 들어, rootless 컨테이너는 컨테이너 호스트의 권한이 있는 포트(1024 미만의 포트)를 통해 네트워크 서비스를
게시할 수 없습니다.
필요에 따라 root로 직접 컨테이너를 실행할 수 있지만 그러면 시스템의 보안이 다소 저하되고
공격자가 버그를 이용하여 컨테이너를 손상시킬 수 있습니다.
--- 인용구 내용을 보면 ' 권한이 없는 일반 사용자로 컨테이너를 실행할 수 있습니다.'
- 일반 사용자로 Systemd 서비스 실행
systemd로 시스템 서비스는 물론 사용자 서비스도 관리할 수 있다.
사용자는 systemd 사용자 서비스를 통해 자체 서비스용 유닛 파일을 만들고 root 액세스 권한 없이도
systemctl 명령을 사용하여 그러한 서비스를 관리할 수 있습니다.
!! 참고!!
루트가 아닌 사용자로 사용자 서비스를 활성화하면 SSH를 사용하거나 텍스트 또는 그래픽 콘솔을 통해
첫 번째 세션을 열 때 해당 서비스가 자동으로 시작됩니다.
마지막 세션을 닫으면 서비스가 중지되고 , 이 동작은 시스템이 시작될 때 시작되고 시스템이
종료될 때 중지되는 시스템 서비스와는 다릅니다.
!! 참고 2!!
loginctl enable-linger 명령을 실행하여 이 기본 동작을 변경하고 활성화된 서비스가 서버와 함께
시작되고 서버가 종료되면 중지되도록 강제 실행할 수 있습니다.
( 작업을 되돌리려면 loginctl disable-linger 명령을 사용합니다. 현재 상태를 확인은 loginctl show-user 유저명) - Systemd 사용자 서비스 설정
사용자 서비스를 제어하려면 systemctl --user 명령어와 옵션을 사용합니다.
systemd.unit 및 systemd.service에 대해 찾아보시고 공부하셔야 합니다.
[user@host]$ mkdir -p ~/.config/systemd/user/ # 우선 서비스를 사용할 유저로 systemd.unit 디렉토리를 만들어준다.
[user@host]$ podman denerate systemd --name '컨테이너명' --files --new
# podman generate systemd 명령은 컨테이너를 모델로 사용하여 구성파일을 만들고
systemd에서는 처음에는 컨테이너가 없을 것으로 가정하기 때문에 파일을 만든 다음
컨테이너를 삭제해야 합니다.
## -name '컨테이너명' 은 유닛 파일을 생성할때 모델로 사용할 기존 컨테이너의 이름을 지정해줍니다.
(podman 은 이 이름을 사용하여 container-container_name.service 유닛 파일의 이름을 빌드함)
## --new 옵션은 서비스가 시작되면 컨테이너를 만들고 중지되면 삭제하도록 podman을
구성함
3. Systemd를 사용하여 컨테이너 시작과 중지
컨테이너를 제어는 systemctl 명령을 사용하고
- 시작 : systemctl --user start container -web # systemd로 만든 container-'컨테이너명'으로 입력
- 중지 : systemctl --user stop container-web
- 상태 : systemctl --user status container-web
연습 - 1. 컨테이너 관리 툴 설치, rootless 컨테이너 실행
2. 시스템이 시작될 때 시작할 컨테이너에 대해 systemd 설정
[root@serverb]# yum module install container-tools
[user@serverb]# podman run -d --name nginx -p 80:80 -v registry.access.redhat.com/ubi8/nginx-120
[user@serverb]# curl http://localhost:80/ # ngix 구동된 웹페이지 확인
# nginx 컨테이너가 서버와 함께 자동으로 시작되도록 serverb 에서 user 유저로 systemd를 구성
[user@serverb]# mkdir -p ~/.config/systemd/user/
[user@serverb]# podman generate systemd --name nginx --files --new
[user@serverb]# podman stop nginx
[user@serverb]# podman rm nginx
[user@serverb]# systemctl --user daemon-reload
[user@serverb]# systemctl --user enable --now container-nginx.service
[user@serverb]# loginctl enable-linger
여기까지 RHCSA8 기출 중에 가장 중요한 PODMAN입니다.
실습으로 확인하시고 궁금하신 내용 댓글 달아 주세요
'Certificate > RHCSA' 카테고리의 다른 글
RHCSA 컨테이너 (Podman 기초 다지기! 첫번째) (7) | 2023.02.23 |
---|---|
RHCSA 8 기출 6-1 ( LVM ) (5) | 2023.02.14 |
리눅스 ROOT 암호 복구방법 (4) | 2023.02.06 |
RHCSA 8 기출문제 #7 (autofs , podman , 튜닝) (50) | 2023.02.03 |
RHCSA 8 기출문제 #6 (SWAP 추가 , LVM , /etc/fstab ) (21) | 2023.02.02 |
- Total
- Today
- Yesterday
- Rcity 9번
- gzip
- Rcity CTF
- CTF
- 파이썬실습
- 리눅스 환경변수 지정
- Rcity1번
- 라쿤시티
- grootboan
- 리눅스본딩
- 7-zip
- PODman기초
- rhcsa8덤프
- 주소DB만들기
- 쉘 스크립트 기초
- rhcsa8
- podman
- rhcsa8 덤프
- 리눅스
- 리눅스 쉘 스크립트
- 파이썬기초
- grootsecuriry
- rhcsa8 기출문제
- RCity operation 1
- 리눅스 명령어
- Rcityboan.com
- 맨탈훈련
- Grootsecurity
- rhcsa8 시험문제
- Rcity
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |