참고
Docker container
NOTE
Docker container ⇒ Dokcer image Snpashot + Process
위 처럼 Dokcer Image + Process를 통해 Container를 생성한다!
Container 격리 기술
NOTE
격리 기술 | 설명 |
Cgroups | Control group의 약어로, 프로세스의 리소스 사용량을 격리하고 제어하는 리눅스 커널의 기술이다. |
Namespace | 리눅에서 VM과 같이 각 Guest OS별로 독립적인 공간을 제공하고 서로가 충돌되지 않게 해주는 역할을한다. |
chroot | 프로세스의 루트 디렉토리를 변경, 격리하여 가상의 루트 디렉토리를 만든다. |
pivot_root | 루트 파일시스템 자체를 바꿔, 컨테이너가 전용 루트 파일 시스템을 가지도록 한다.
(chroot 보완) |
Mount namespace | namespace 내에 파일 시스템 트리를 구성 |
UTS namespace | 컨테이너에 대한 hostname 격리를 수행하여 고유한 hostname 보유 가능 |
PID namespace | PID와 프로세스를 분리(systemd와 분리) |
Network namespace | 네트워크 리소스 (IP, Port, route table ,ethernet, .. ) 할당 |
IPC namespcae | 전용의 process table 보유 |
가상의 공간을 하나 만드는것
Container 라이프 사이클
NOTE
전반적인 라이프사이클 흐름
docker pull ubuntu:16.04
docker images | grep ubuntu
docker create -it --name=myubuntu16-1 ubuntu:16.04
docker start myubuntu16-1
docker stop myubuntu16-1
docker rm myubuntu16-1
Shell
복사
실습 코드
Container Process, Snapshot 확인
NOTE
# docker 이미지 실행, 내부에서 파일 생성
docker run -it --name=mycontainer ubuntu:14.04 bash
'fastcampus!' > mycontainer.txt
# 프로세스 확인
ps -ef | grep mycontainer
# 컨테이너 내부에서 생성된 정보는 container layer + snapshot 영역에 저장된다.
sudo su -
find /var/lib/docker -name mycontainer.txt
cd ~/merged # merged로 표시된 경로로 이동
ls
Shell
복사
프로세스로 확인이 가능하다.
스냅샷을 확인할 수 있다.