ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Docker) namesapce 실습해보기
    Cloud/Docker 2022. 9. 28. 01:14
    실습 환경 : AWS console (2022/09), Visual Studio Code, Xshell7
    실습 목적 : 리눅스 컨테이너 기술 기반인 namespace에 대해 알아보고 실습해본다.

    namespace

    • 프로세스별로 별도의 커널자원을 분할하는 Linux 커널 기능을 한다.
    • namespace 종류로는 IPC, mnt, net, pid, pid_for_children, uts 가 있다.
    • cgroup은 프로세스 사용량을 제한하는 목적이라면, namespace는 프로세스가 볼수있는 범위를 지정하는 목적이다.


    Container

    • Container는 완전 격리된 프로세스로 cgroup으로 자원 사용량을 제한하거나, namespace를 통해 볼수있는 자원을 제한할 수 있다.


    namespace 종류

    • PID namespace : 프로세스 ID정보를 격리하여 namespace와 다른 프로세스에 접근 불가하다.
    • Network namespace : 네트워크 장치, IP주소, 포트, 라우팅테이블의 네트워크 리소스를 격리한다.
    • User namesapce : 프로세스별로 UID, GID 정보를 격리한다.
    • Mount namespace : 프로세스별로 마운트되는 파일시스템을 격리한다.
    • IPC namespace : IPC(프로세스간 통신)를 격리하여, 다른 프로세스의 접근이나 제어를 방지한다.
    • UTS namespace : 호스트 명이나 도메인명을 격리한다.


    Mount namespace 실습해보기


    1. 관리자로 사용자 변경
    sudo su

    2. Mount namespace 생성 후, Mount namespace로 생성된 프로세스 ID 확인

    unshare -m /bin/bash
    echo $$

    3. tmpfs를 /mnt에 마운트 후, 마운트가 잘 되었는지 확인
        -  tmpfs는 메모리 기반 임시 파일 시스템
        -  tmpfs는 사이즈를 지정하지않으면 물리메모리 절반 크기로 설정
        -  tmpfs는 휘발성 공간으로 reboot/booting시 소멸한다.

    mount -tmpfs tmpfs /mnt
    mount | grep /mnt

    4. /mnt 디렉토리에 텍스트 파일 생성

    echo "hello" > text.txt

    5. 다른 프로세스로 접속하여 생성한 텍스트파일이 격리되어있는지 확인
        -  다른 프로세스에서 접근하면 해당 파일을 읽을 수 없다.

    cat /mnt/text

    6. nsenter 명령으로 다른 프로세스에서 격리된 namesapce에 진입할 수 있게 해준다.

    sudo nsenter -t 1623 -a
    # sudo nsenter -t [PID] -a [namespace]

     



    추가 설명

    1. unshare 명령
      •  namespace를 생성하는 명령
      •  unshare [옵션] [프로그램 [argument] ]로 사용한다.
        1.  -p : PID namespace 생성
        2.  -m : Mount namespace 생성
        3.  -i : IPC namespace 생성
        4.  -f : child 프로세스 생성
    2. PID namespace
      • 현재 PID 확인 명령어 : echo $$
      • 현재 상위 프로세스 정보 확인 명령어 : ps aux | head -n5
      • namespace 생성 : unshare -pmif
      • /proc 디렉토리에 proc mount : mount -t proc none /proc
      • 현재 상위프로세스 정보 확인 : ps aux | head -n5


    댓글

Designed by Tistory.