[OpenShift] 컨테이너화된 서비스 생성 및 관리
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