본문 바로가기

docker

(46)
[Docker] Docker의 작동 구조 (2) (cgroups) 릴리즈 관리 장치(cgroups) Docker에서는 물리 머신 상의 자원을 여러 컨테이너가 공유하여 작동된다. 이 때 Linux 커널의 기능인 'control groups(cgroups)' 기능을 사용하여 자원의 할당 등을 관리한다. cgroups는 프로세스와 스레드를 그룹화하여, 그 그룹 안에 존재하는 프로세스와 스레드에 대한 관리를 수행한다. (예를 들어 호스트 OS의 CPU나 메모리와 같은 자원에 대해 그룹별로 제한을 둘 수 있다. ) cgroups로 관리할 수 있는 주요한 일은 다음과 같다. cgroups의 주요 서브 시스템 항목 설명 cpu cpu 사용량을 제한 cpuacct cpu 사용량 통계 정보를 제공 cpuset cpu나 메모리 배치를 제어 memory 메모리나 스왑 사용량을 제한 dev..
[Docker] Docker의 작동 구조 (1) (namespace) 컨테이너를 구획화하는 장치(namespace) Docker는 컨테이너라는 독립된 환경을 만들고, 그 컨테이너를 구획화하여 애플리케이션의 실행 환경을 만든다. 이 컨테이너를 구획하는 기술은 Linux 커널의 namespace(이름공간)라는 기능을 사용한다. namespace란 한 덩어리의 데이터에 이름을 붙여 분할함으로써 충돌 가능성을 줄이고, 쉽게 참조할 수 있게 하는 개념이다. 이름과 연결된 실체는 그 이름이 어떤 namespace에 속해 있는지 고유하게 정해진다. 그래서 이름공간이 다르면 동일한 이름이라도 다른 실체로 처리된다. PID namespace PID란 Linux에서 각 프로세스에 할당된 고유한 ID를 말한다. PID namespace는 PID와 프로세스를 격리시킨다. namespace가 다..
[Docker] Docker 컴포넌트 Docker은 여러 개의 컴포넌트로 구성되어 있다. 핵심 기능인 Docker Engine을 중심으로 컴포넌트를 조합하여 애플리케이션 실행 환경을 구축한다. Docker 컴포넌트의 개요는 다음과 같다. Docker Engine (핵심 기능) Docker 이미지를 생성하고 컨테이너를 가동시키기 위한 Docker의 핵심 기능. Docker 명령의 실행이나 Dockerfile에 의한 이미지도 생성한다. Docker Registry (이미지 공개 및 공유) 컨테이너의 바탕이 되는 Docker 이미지를 공개 및 공유하기 위한 레지스트리 기능. Docker의 공식 레지스트리 서비스인 Docker Hub도 이 Docker Registry를 사용한다. Docker Compose (컨테이너 일원 관리) 여러 개의 컨테이너..
[Docker] Docker의 기능 Docker에는 크게 세 가지 기능이 있다. Docker 이미지를 만드는 기능 (Build) Docker 이미지를 공유하는 기능(Ship) Docker 컨테이너를 작동시키는 기능(Run) - Docker 이미지를 만드는 기능 (Build) Docker는 애플리케이션의 실행에 필요한 프로그램 본체, 라이브러리, 미들웨어, OS나 네트워크 설정 등을 하나로 모아서 Docker 이미지를 만든다. Docker 이미지는 실행 환경에서 움직이는 컨테이너의 바탕이 된다. Docker에서는 하나의 이미지에는 하나의 애플리케이션만 넣어 두고, 여러 개의 컨테이너를 조합하여 서비스를 구축하는 방법을 권장한다. Docker 이미지의 정체는 애플리케이션의 실행에 필요한 파일들이 저장된 디렉토리이다. 이미지를 tar파일로 출력..
[Docker] Docker의 개요 Docker란 Docker(도커)는 애플리케이션의 실행에 필요한 환경을 하나의 이미지로 모아 두고, 그 이미지를 사용하여 다양한 환경에서 애플리케이션 실행 환경을 구축 및 운용하기 위한 오픈소스 플랫폼. Docker는 내부에서 컨테이너 기술을 사용하고 있다. https://www.docker.com/get-started Get Started with Docker | Docker Learn about the complete container solution provided by Docker. Find information for developers, IT operations, and business executives. www.docker.com 프로그래머에게 Docker란? 웹 시스템 개발 시 애플리케이..
[Docker] 컨테이너(Container)란? Docker를 이해하기 위해서는 Docker의 배경 기술인 컨테이너 기술에 대한 이해가 필요하다. 컨테이너란? 컨테이너란 호스트 OS상에 논리적인 컨테이너를 만들고, 애플리케이션을 작동시키기 위해 필요한 라이브러리나 애플리케이션 등을 하나로 모아, 마치 별도의 서버인 것처럼 사용할 수 있게 만든 기술 호스트 OS는 리소스를 논리적으로 분리시키고 여러 개의 컨테이너가 공유하여 사용한다. 오버헤드가 적기 때문에 가볍고 고속으로 작동한다는 것이 특징이다. 보통 물리 서버 상에 설치된 호스트 OS의 경우 하나의 OS 상에서 여러 애플리케이션이 똑같은 리소스를 사용한다. 각 어플리케이션은 데이터를 저장하는 디렉토리를 공유하고, 서버에 설정된 IP주소로 통신을 하기 때문에 미들웨어나 라이브러리 버전이 다른 경우 각..