본문 바로가기

infra

(4)
[Docker] Docker의 작동 구조 (4) (이미지 데이터 관리) Docker 이미지의 데이터 관리 장치 'Copy on Write'란 복사를 요구 받으면 바로 복사하지 않고 원래의 데이터를 그대로 참조시켜, 원본 또는 복사 어느 쪽에 수정이 가해진 시점에 비로서 새로운 빈 영역을 확보하고 데이터를 복사하는 것을 뜻한다. Docker에서는 'Copy on Write' 방식으로 컨테이너의 이미지를 관리한다. Docker의 이미지를 관리하는 스토리지 디바이스로는 다음과 같은 것들이 있다. AUFS 다른 파일 시스템의 파일이나 디렉토리를 투과적으로 겹쳐서 하나의 파일 트리를 구성할 수 있는 파일 시스템. 단, 현재 AUFS는 표준 Linux 커널의 일부가 아니다. Btrfs Linux용 Copy on Wirte 파일 시스템으로, Oracle에 의해 2007년 발표되었다. B..
[Docker] Docker의 작동 구조 (3) (네트워크 구성) 네트워크 구성(가상 브리지/가상 NIC) Linux는 Docker를 설치하면 서버의 물리 NIC(Network Interface Card)가 docker()라는 가상 브리지 네트워크로 연결된다. 이 docker()는 Docker를 실행시킨 후에 default로 만들어진다. Docker 컨테이너가 실행되면 컨테이너에 172.17.0.0/16이라는 서브넷 마스크를 가진 프라이빗 IP 주소가 eth0으로 자동으로 할당된다. 이 가상 NIC는 OSI 계층의 Layer 2인 가상 네트워크 인터페이스로, 페어인 NIC와 터널링 통신을 한다. 가상 NIC(vethxxx)는 컨테이너에서는 eth0으로 인식된다. Docker 컨테이너와 외부 네트워크가 통신을 할 때는 가상 브리지 docker()와 호스트 OS의 물리 N..
[Docker] Docker의 작동 구조 (2) (cgroups) 릴리즈 관리 장치(cgroups) Docker에서는 물리 머신 상의 자원을 여러 컨테이너가 공유하여 작동된다. 이 때 Linux 커널의 기능인 'control groups(cgroups)' 기능을 사용하여 자원의 할당 등을 관리한다. cgroups는 프로세스와 스레드를 그룹화하여, 그 그룹 안에 존재하는 프로세스와 스레드에 대한 관리를 수행한다. (예를 들어 호스트 OS의 CPU나 메모리와 같은 자원에 대해 그룹별로 제한을 둘 수 있다. ) cgroups로 관리할 수 있는 주요한 일은 다음과 같다. cgroups의 주요 서브 시스템 항목 설명 cpu cpu 사용량을 제한 cpuacct cpu 사용량 통계 정보를 제공 cpuset cpu나 메모리 배치를 제어 memory 메모리나 스왑 사용량을 제한 dev..
[Docker] 컨테이너(Container)란? Docker를 이해하기 위해서는 Docker의 배경 기술인 컨테이너 기술에 대한 이해가 필요하다. 컨테이너란? 컨테이너란 호스트 OS상에 논리적인 컨테이너를 만들고, 애플리케이션을 작동시키기 위해 필요한 라이브러리나 애플리케이션 등을 하나로 모아, 마치 별도의 서버인 것처럼 사용할 수 있게 만든 기술 호스트 OS는 리소스를 논리적으로 분리시키고 여러 개의 컨테이너가 공유하여 사용한다. 오버헤드가 적기 때문에 가볍고 고속으로 작동한다는 것이 특징이다. 보통 물리 서버 상에 설치된 호스트 OS의 경우 하나의 OS 상에서 여러 애플리케이션이 똑같은 리소스를 사용한다. 각 어플리케이션은 데이터를 저장하는 디렉토리를 공유하고, 서버에 설정된 IP주소로 통신을 하기 때문에 미들웨어나 라이브러리 버전이 다른 경우 각..