본문 바로가기
Study notes

Docker Container 이해하기

by AI미남홀란드 2024. 7. 11.
728x90

Container는 가상환경과 제일 비교가 많이 된다.

 

Docker Container

 

가상머신 과 Container 차이

- 가상머신은 OS 기 때문에 부팅과정을 거쳐야한다.

- 성능손실이 발생한다.

- 격리된 환경을 제공받기 위해 쓰는 것

 

컨테이너 특징

- 호스트와 애플리케이션을 분리 : os level 가상화

- 적은 시스템 리소스와 디스크 공간 소비

- 리소스 사용에 유연성과 효율성 제공

- 가상머신과는 달리 개별적인 커널을 갖지 않음.

 

컨테이너 기반 기술

▶ Cgroup

- 리소스에 대한 제한과 우선 격리를 제거

namespace

- 애플리케이션에 대한 격리(isolation) 환경을 제공

 

(docker 회사 때문에 사실상 널리 퍼지게 되었음)

linux TIP. (명령어)

 

nautilus   # 파일탐색기 (GUI)

gnome-system-monitor  # 작업관리자 (프로세스 확인가능)

 

파일시스템 격리 - Chroot

 

◆ Chroot 

- 프로세스에게 격리된 루트 디렉터리 제공을 한다.

- 1979 UNIX에 포함됨

- Httpd, vsfpd 등 내부 패키지에서 많이 사용되고 있다.

 

namespace

 

◆ namespace

- 리눅스 네임스페이스 동일 시스템 내부에서, 각각 별개의 독립된 공간을 사용하는 것처럼 격리된 환경을 제공하는 리눅스 커널의 기능 

- H/W를 가상화하는 hypervisor와 달리 커널 레벨에서 process의 실행 환경 자체를 격리하는 기술

- 리눅스 네임스페이스를 구현할 때는 unshare()와 setns() 시스템 콜을 이용해 만들고 IPC, Network, Mount, PID, UTS, User의 6개의 상 수 플래그를 clone(), unshare(), setns() 시스템 콜에 전달해 수행

 

UTS namespace (Unix Timesharing namespace)
- process에게 호스트 이름과 도메인 이름을 네임스페이스 별로 격리
- 호스트 이름에 종속적인 애플리케이션에서 중요한 의미를 갖는다.

[root@dockeredu ~]# unshare -u /bin/bash
[root@dockeredu ~]# hostname con1
[root@dockeredu ~]# hostname

# con1 로 hostname 이 바뀐걸 볼 수 있다.

 

 

◆ LAB

- testnet 네트워크 네임스페이스를 생성하고 linux bridge 기술을 이용하여 2개의 네트워크 네임스페이스간에 통신이 가능하도록 설정함.

 

 

728x90

'Study notes' 카테고리의 다른 글

Docker Container 이해하기 - (3)  (0) 2024.07.12
Docker Container 이해하기 - (2)  (0) 2024.07.11
FastAPI 기초부터 A to Z  (0) 2024.07.10
Docker에 대하여 - (2)  (0) 2024.06.13
Docker에 대하여 - (1)  (0) 2024.06.13