Docker) 초보자를 위한 도커 설명회

2023. 1. 30. 23:27컴퓨터 과학

Docker는 어플리케이션을 구성하는 여러 서비스가 독립적인 환경에서 실행되도록 관리하는 오픈 소스 프로젝트입니다.

Docker를 사용함으로써 어플리케이션의 개발, 운영, 확장, 유지보수, 배포를 빠르고 쉽게 할 수 있습니다.

 


 

도커 공식 이미지
도커 공식 이미지

도커란?

도커는 libcontainer라는 자체 기술을 통해 필요한 최소한의 의존성(lib, bin) 등을 가진 경량 컨테이너를 도커 엔진을 통해 실행합니다.

 

LXC vs Docker
LXC vs Docker

도커와 기존 컨테이너와의 가장 큰 차이는 LXC는 init 프로세스를 통해, 여러 프로세스를 하나의 컨테이너에서 관리할 수 있으나, 도커에서는 세분화된 프로세스를 standard-alone으로 실행하도록 권장하고 지원하며, Host OS 위에 도커 엔진이라는 컨테이너 런타임을 두어 다양한 플랫폼에서 동일한 환경으로 컨테이너를 실행할 수 있도록합니다(윈도우, OS X에서도 실행 가능).

 


도커 아키텍처

도커는 크게 도커 클라이언트와 도커 데몬으로 나뉘어 클라이언트와-서버 구조로 동작합니다.

이 둘은 Rest 또는 소켓으로 통신하며 이미지를 생성, 확장, 실행, 배포 등의 작업을 수행합니다.

도커 아키텍처
Docker Architecture

 

도커 레지스트리

도커 이미지가 저장되는 곳으로 Docker-Hub와 같은 Public 레지스트리나 개인 레지스트리를 통해 사용 가능합니다.

이미지가 없다면 도커는 기본적으로 도커 허브에서 이미지를 찾아 사용합니다.

도커 허브에서도 공식 이미지가 존재하므로 유사품 주의~

 

Dockerfile

이미지를 빌드하기 위한 스크립트로 기존 이미지 위에 추가적인 명령을 덧붙여 확장하는 방식으로 사용됩니다.

FROM, RUN, ENTRYPOINT, ADD 등의 문법을 통해 이미지를 쉽게 빌드할 수 있습니다.

 

도커 이미지

 Dockerfile에서 여러 실행 명령이 레이어라는 개념으로 베이스 이미지 위에 차곡차곡 빌드되며 도커파일의 수정이 발생했을 시, 변경된 레이어만 수정하는 방법으로 빌드 시간을 단축시킵니다.

 

도커 컨테이너

도커 이미지가 실제로 실행되어 인스턴스화가 되었을 때, 컨테이너라고 일컫으며 실행된 컨테이너 내부의 수정 사항은 별도의 설정이 없는 한 반영되지 않습니다.


요약

 

도커는 어플리케이션 내부 모듈들의 상호 의존성을 느슨하게 만들어 확장과 유지보수를 쉽게 만들어준다는 장점이 있습니다.

 

도커 프로세스를 추상화시켜 프로그램의 Life-Cycle과 비교하자면

  1.  Dockerfile : Makefile과 같은 빌더로써 명령 간의 의존성에 따라 빌드, 명령어는 컴파일되어 오브젝트 파일이 되며 이들이 링킹 과정을 거쳐 프로그램(도커 이미지)이 생성됨
  2.  Docker Image : 프로그램과 같은 존재로써 ENTRYPOINT(main 함수)를 제공합니다.
  3.  Docker Container : 프로그램이 메모리에 적재되어 실행되는 것처럼 ENTRYPOINT의 명령을 수행한 이후 종료되며, 프로그램을 여러 번 실행해도 동일한 동작을 하는 것처럼 컨테이너의 동작은 다른 컨테이너와 독립적으로 동작합니다.
반응형