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개의 네트워크 네임스페이스간에 통신이 가능하도록 설정함.
'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 |