클라우드/OpenShift

[OpenShift] 컨테이너화된 서비스 생성 및 관리

세브웁스 2023. 5. 25. 12:00
반응형

Rootless 컨테이너

 

User 네임스페이스

- 컨테이너는 Linux 네임스페이스를 사용하여 실행되는 호스트로부터 컨테이너 격리

- User 네임스페이스는 컨테이너를 rootless로 만드는데 사용

- User 네임스페이스는 사용자 및 그룹 ID를 맵핑하므로 네임스페이스 내 프로세스가 다른 ID로 실행되는 것처럼 표시될 수 있음

- rootless 네임스페이스를 사용하여 어플리케이션 코드가 root로 실행되는 것처럼 표시

- 호스트 관점에서는 권한이 일반 사용자의 권한으로 제한

- 공격자가 사용자 네임스페이스를 호스트로 나올경우 권한 없는 일반 사용자의 기능만 가짐

 

네트워킹

- rootless 컨테이너에서는 Slirp에서 네트워킹 관리

- 컨테이너의 사용자 및 네트워크 네임스페이스로 분기하고, 기본 경로가 되는 탭 장치를 생성하는 방식으로 작동

 

 

 

[실습1] 컨테이너화된 서비스 생성

[student@workstation ~]$ lab container-review start

 

- 백그라운드로 실행

- 호스트의 8080포트를 컨테이너 포트 80에 맵핑

- 2.4 이미지 버전 지정 실행

[student@workstation ~]$ podman run -d -p 8080:80 --name httpd-basic \
>  quay.io/redhattraining/httpd-parent:2.4

 

 

홈페이지 호출 및 테스트

[student@workstation ~]$ curl http://localhost:8080

 

컨테이너 터미널 접속

[student@workstation ~]$ podman exec -it httpd-basic /bin/bash

 

Index 페이지 수정

bash-4.4# ls -la /var/www/html
bash-4.4# echo "Hello World" > /var/www/html/index.html

 

Index 페이지 수정 확인

bash-4.4# exit
[student@workstation ~]$ curl http://localhost:8080

 

작업 평가

[student@workstation ~]$ lab container-review grade

 

 실습 종료

[student@workstation ~]$ lab container-review finish

 

 

 

[요약]

- 로컬 / 원격 레지스트리에서 이미지 검색, 다운 가능

- 일부 컨테이너 이미지에는 –e 명령의 podman run 옵션을 사용하여 설정하는 환경변수 필요

- Red Hat Container Catalog는 레드헷의 공식 컨테이너 이미지 레포지토리에서 컨테이너 이미지 검색, 탐색 및 분석 지원


 

Podman을 사용한 컨테이너 라이프사이클 관리


[실습2] MySQL 컨테이너 관리

 

실습 강의 시작

[student@workstation ~]$ lab manage-lifecycle start

 

레드헷 레지스트리에 로그인

[student@workstation ~]$ podman login registry.redhat.io

 

Mysql-db의 이름으로 mysql 실행

[student@workstation ~]$ podman run --name mysql-db \
> registry.redhat.io/rhel8/mysql-80:1

 

Mysql-db의 로그보는 명령어

[student@workstation ~]$ podman logs mysql-db

 

Mysql의 환경변수들을 설정하여 실행하는 명령어

[student@workstation ~]$ podman run --name mysql \
> -d -e MYSQL_USER=user1 -e MYSQL_PASSWORD=mypa55 \
> -e MYSQL_DATABASE=items -e MYSQL_ROOT_PASSWORD=r00tpa55 \
> registry.redhat.io/rhel8/mysql-80:1

 

로컬에 있는 dump 파일 복사

[student@workstation ~]$ podman cp ~/DO180/labs/manage-lifecycle/db.sql mysql:/

 

터미널로 접속하여 dump파일로 백업

[student@workstation ~]$ podman exec mysql /bin/bash -c \
 'mysql -uuser1 -pmypa55 items < /db.sql'

 

실습 강의 종료

[student@workstation ~]$ lab manage-lifecycle finish
반응형