클라우드/Docker

도커(Docker)의 기능 및 작동 구조

Tay Kim 김태희 2021. 9. 22. 00:47

개발과 도커

Docker는 애플리케이션의 실행에 필요한 환경을 하나의 이미지로 모아두고, 그 이미지를 사용하여 다양한 환경에서 실행 환경을 구축 및 운용하기 위한 오픈소스 플랫폼이다. 

 

폭포형 개발로 애플리케이션을 개발할 때에는 개발 환경이나 테스트 환경에서는 올바르게 작동해도 스테이징 환경이나 제품 환경으로 전개했을 때 정상적으로 작동하지 않는 경우가 있다. *스테이징 환경: 지속적 딜리버리가 일어나는 시스템 개발에서 개발한 애플리케이션을 제품 환경에 전개하기 직전에 확인하는 테스트 환경. 

도커에서는 이러한 인프라 환경을 컨테이너로 관리한다. 모든 파일 및 디렉토리들을 컨테이너로서 모아버리는 것이다. 이러한 컨테이너의 바탕이 되는 도커 이미지를 Docker Hub와 같은 리포지토리에서 공유한다. 컨테이너에서 이미지를 만들고, 이미지로 컨테이너를 만든다. 

 

한 번 만들면 어디서든지 움직이는 소프트웨어의 특성을 이식성(Portability)이라고 한다. 도커는 이식성이 높아 도커 컨테이너의 바탕이 되는 도커 이미지만 있으면 애플리케이션을 동일한 환경에서 가동시킬 수 있다. 

 

도커의 기능 3가지

Build: 도커 이미지를 만드는 기능

도커는 애플리케이션의 실행에 필요한 프로그램 본체, 라이브러리. 미들웨어, OS나 네트워크 설정 등을 하나로 모아서 도커 이미지를 만든다. 도커 이미지는 디렉토리이다. 도커 명령을 사용하면 이미지를 tar 파일로 추출할 수 있다. 도커 이미지는 도커 명령을 사용해 수동으로 만들 수도 있고, DockerFile이라는 설정 파일을 만들어 그것을 바탕으로 자동으로 이미지를 만들 수도 있다. 지속적 인티그레이션과 지속적 딜리버리의 관점에서 IaC(Infrastructure as a Code)를 생각하면 Dockerfile을 사용해 관리하는 것이 바람직하다. 

 

*지속적 인티그레이션: 애플리케이션의 코드를 수정할 때마다 테스트를 실행해 확실하게 작동하는 코드를 유지하는 방법

*지속적 딜리버리: 짧은 주기로 소프트웨어를 생산하는 소프트웨어 공학적 접근법

 

Ship: 도커 이미지를 공유하는 기능

도커 이미지는 도커 레지스트리에서 공유할 수 있다. 도커의 공식 레지스트리인 Docker Hub에서는 Linux 배포판의 기본 기능을 제공하는 베이스 이미지를 배포하고 있다. 이러한 베이스 이미지에 미들웨어나 라이브러리, 전개할 애플리케이션 등을 넣은 이미지를 겹쳐서 독자적인 도커 이미지를 만든다. 도커 명령을 사용해 레지스트리에 있는 이미지를 검색, 업로드, 다운로드 할 수 있다. Github와 연계해 Docker 이미지를 자동으로 생성하고 Docker Hub에서 공개하는 자동 생성 기능을 Automated Build라고 한다. 

 

Run: 도커 컨테이너를 작동시키는 기능

도커는 리눅스 상에서 컨테이너 단위로 서버 기능을 작동시킨다. 도커는 하나의 리눅스 커널을 여러개의 컨테이너에서 공유한다. 컨테이너 안에서 작동하는 프로세스를 하나의 그룹으로 관리하고, 그룹마다 각각 파일 시스템이나 호스트명, 네트워크 등을 할당한다. 그룹이 다르면 프로세스나 파일에 대한 엑세스를 할 수 없다. 

 

 

'클라우드 > Docker' 카테고리의 다른 글

서버 가상화의 종류  (0) 2021.09.21