본문 바로가기
리눅스/Part1. Ch03. 나만의 컨테이너 환경 만들기

06. (실습) 나만의 컨테이너 생성 - namespace_1

by Engineer-Lee 2022. 12. 6.
반응형

요구사항:
- 호스트명 변경, 프로세스 ID 변경, 프로세스 리스트 정보 변경
1단계: "run" 명령어 전달 시 run 함수 실행
2단계: 새로운 프로세스에서 명령어 실행
3단계: 새로운 UTS 설정 추가 → hostname 변경
4단계: 컨테이너 환경 시작 시 호스트명을 container로 변경
5단계: 컨테이너 환경에서 ps명령 실행 시 제한된 프로세스 정보만 조회. 루트 파일
시스템 변경

 

호스트명 - UTS namespace

프로세스 ID - PID namespace

프로세스 리스트 정보 - Mount namespace

 

step1은 명령어 종류에 따른 함수 실행으로 run 명령어를 전달 시 run 함수가 실행되고 그 외는 전부 종료시킨다.

run 함수는 전달 받은 모든 Argument를 출력시킨다.

 

go run step1_main.go run ls -l 명령어로 실행시키면 ls -l 이라는 argument가 출력된다.

 

run이 아닌 명령어를 입력하면 종료가 된다.

 

 

 

step2에서는 새로운 프로세스에서 전달받은 명령어를 실행해준다.

 

 

step3에서는 호스트명을 변경하기 위해 새로운 UTS 설정을 추가한다.

 

namespace를 이용해서 프로세스를 생성하려면 권한이 필요하므로 루트계정으로 변경 후 명령어를 입력하자

 

아래와 같은 결과가 나온다면 vi /etc/profile 로 들어가서 export PATH=$PATH:/usr/local/go/bin 을 입력하고 저장한 뒤

source /etc/profile 명령어로 적용시켜야 한다.

그 후 go run step3_main.go run /bin/bash로 컨테이너의 bash 셸을 통해 hostname을 container로 변경하였다.

 

이는 별도의 네임스페이스로 새 bash셸을 열어서 hostname을 확인하면 container가 아닌 ip주소가 출력되는걸 볼 수 있다.

exit로 빠져나와서 다음 실습을 진행하자

 

 

 

step4에서는 컨테이너 환경 시작시 호스트명을 container로 변경한다.

 

호스트명이 container로 변경되었다.

 

 

 

 

step5에서는 컨테이너 환경에서 ps 명령을 실행 시 제한된 프로세스 정보만 조회되도록 한다.

 

반응형