본문 바로가기

IT_Term

[Cloud_Computing] docker 개요

728x90

#####. docker

###. docker란?

#. 발전과정

 - 해외로 배송되는 물건들은 각각마다 크기가 다르고 형태도 달라서 적재에 어려움을 격는다. 그런 규격이 없는 물건들을 선박하기에 시간이 오래 걸렸고, 물건의 품질도 낮아지게 되는데. 이를 McLean이라는 사람이 비효율의 종지부를 찍는다.

 - 트럭 운전 기사였던 McLean은 트럭이나 선박에 화물을 적재할 때 걸리는 오랜 대기시간을 해결하기 위해 "박스"만 분리하여 배에 싣는 아이디어를 생각한다. 하지만 규격이 다른 박스를 위해 선박회사는 싣는 도구를 개발하기 힘들었고, 이를 맥린은 모든 운반되는 것을 Container라는 규격을 만들어 낸다. 

 - 맥린의 헤드 엔지니어였던 Tantlinger는 트럭, 크레인으로 복합 운송, 적재하는 매커니즘인 Twistlock을 개발한다. 그는 맥린에게 이런 컨테이너 특허 기술을 누구나 라이센스 없이 쓸 수 있게 설득시킨다.

 - 그렇게 맥린은 바다와 육지를 포괄한다는 의미로 Sea-Land를 설립하고  ‘세상을 바꾼 몇 안 되는 사람 중 하나'라는 타이틀을 얻는다.

#. IT에서의 Container, docker

 - IT에서 docker는 MSA와 같은 작은 단위도 container 안에 담아서 운반하자. 즉, 어떤 애플리케이션도 내부 내용은 중요하지 않다. 규격을 맞추자 라고 줄여서 표현할 수 있다.

$$. Alt + Shift + 방향키 를 누르면 세로로 선택할 수 있다.

#. bash

 - CLI에 입력되는 입력창을 bash라고 한다.

 

###.chroot

 . 체인지 루트라는 의미

#. newroot

 - chroot를 사용하기 위해서 newroot를 생성

 - 루트 파일 시스템을 격리 시켜준다.

 - 루트 하위 폴더에 newroot를 만들어주고 격리된 공간(newroot)에 lib64, bash, ls, data 등의 폴더를 복사한다.

#. chroot를 사용하여 newroot로 접속한 화면

 - 하지만 ls 명령어를 입력해도 기능을 수행하지 않는다.

 - PATH를 잡아주면 성공

 - data 명령어를 사용해보면 newroot는 UTC 대역 시간이 표시되고 exit로 나가서 root의 data명령어를 사용하면 KST가 표시된다.

#. chroot?

 - 파일시스템의 격리를 이해하는 것이 docker 시스템을 이해하는 것이 도움이 된다.

###. namespace

#. namespace?

 - 특정 이름을 가진 공간을 제공해서 격리를 시켜준다는 의미

 - 리눅스 커널에서 제공하는 기반기술인데 리눅스의 핵심 기술

 - IPC, Network, Mount, PID, UTS, User

 - namespace에서 지원하는 시스템콜

  : clone, unshared, setns

#. share mount

  - tmp밑에 mount_test 폴더를 만들고 1번 세션에서 unshare 명령어를 사용하여 mount_test폴더를 마운트 한다.

 - 아래 사진과 같이 마운트 된 정보가 격리 됨을 확인 할 수 있다.

#. UTS namespace

 - 프로세스에게 호스트 이름과 도메인 이름을 네임스페이스로 격리

 - 호스트 네임을 격리하여 변경한 것을 확인 할 수 있다.

 - 호스트 네임을 참조하는 애플리케이션에서 중요한 의미를 갖음

#. network namespace

 - 네트워크를 격리

 - 여기서는 ip명령어를 사용

 - 물리적인 NIC를 리눅스에서는 software 적으로 가상으로 만들어서 특정 프로세스 하나에다 ip를 격리 시켜줄 수 있다.

 - 여기서 network namespace와 같은 원리로 docker에서 프로세스에게 ip를 할당해 준다.

 - 위 개념은 리눅스 보안/ 네트워크 현직자들이 주로 사용하지만 이론적으로 알고 있는 것이 중요하다.

#. control group

 - 프로세스 그룹에 대한 리로스를 제한, 격리, 모니터링 할 수 있다.

 - cgroup에는 CPU, memory, i/o 등을 제한한다.

 - 마찬가지로 software 적인 방법으로 자원을 조금 씩 할당해서 VM과 같은 가상머신처럼 무겁지 않고, 내 자원을 경량컨테이너로 운영 할 수 있다는 것이다.

 - 이 기능들은 도커에서 다 제어를 해주기 때문에 개념만 알고 넘어가도록 하자.

 

728x90