본문 바로가기
기타

Docker 란

by 민죠미 2022. 7. 28.

Docker

도커(Docker)는 리눅스의 응용 프로그램들을 프로세스 격리 기술들을 사용해 컨테이너로 실행하고 관리하는 오픈 소스 프로젝트이다.

우리는 서버를 돌리기 위한 환경을 구축하기 위해 언어, 웹서버, 데이터베이스, 자동배포툴 등 여러가지를 버전 신경써서 다운받은 후 서로 잘 동작될 수 있도록 설정하는 과정을 거친다. 그러나 서버 운영중 더 성능 좋은 서버로 옮겨가거나, 늘어난 접속량을 처리하기 위해 서버를 여럿 추가해야하는 경우가 생기는데 이 때마다 환경구축을 새로하는 것은 골치아픈 일이다. 혹은 같은 서버에 여러 서비스를 각각 다른 실행환경(ex.자바 버전 등)에서 동작해야하는 경우도 일이 까다로워진다. 도커는 이를 해결하는 데 쓰인다.

도커의 동작

  1. 각 요소들이 설치된 모습을 이미지 형태로 저장한다 (각 제품마다 공식적으로 제공되는 이미지도 있고 사용자가 원하는 대로 만들어낼 수도 있음)
  2. 도커 이미지들은 DockerHub에서 업로드/다운로드 된다
  3. 이미지로 저장된 항목들이 함께 연결돼서 동작하도록 설정된 상태를 명령어 텍스트나 문서 형태로 저장할 수 있다
  4. 도커헙에서 다운받은 이미지들은 각각 독립된 가상공간인 컨테이너 안에서 설치되어 복원된다.

도커 vs 가상 컴퓨팅

  • 가상 컴퓨팅 : 하나의 물리적인 컴퓨터 안에 각각의 OS를 가동하는 가상 컴퓨터들이 물리적 자원을 분할하여 사용 (성능 한계)
  • 도커 : OS단까지 내려가지 않고 실행 환경만 독립적으로 가동하기 때문에 컴퓨터에 직접 설치한 것과 크게 성능 차이가 나지 않음 (가볍고 빠름)

컨테이너가 실행되기 위해서는 컨테이너 엔진(도커)이 필요하다. 컨테이너 엔진은 Host OS에 접근하여 필요한 것들을 처리한다.

Container 의 3요소

도커는 컨테이너를 만들고, 배포하고 구동한다. Dockerfile 을 만들고, 이를 이용해 Image 를 만들어 Container 를 구동할 수 있다.

  • Dockerfile : 컨테이너를 어떻게 만들어야 하는지 설명하는 것. (ex. 요리의 레시피)
    • Copy files : 어플리케이션을 구동하기 위한 파일은 무엇인지
    • Install dependencies : 어떤 프레임워크, 라이브러리를 설치해야하는지 (외부 의존성에 관한 명시)
    • Set environment variables : 환경 변수 설정
    • Run setup scripts : 어떻게 구동해야 하는지 기술한 스크립트
  • Image : 실행되고 있는 어플리케이션의 상태를 스냅샷 하여 이미지로 만든 것 (불변)
  • Container : 캡쳐해둔 어플리케이션 이미지를 고립된 환경, 개별적인 파일 시스템 안에서 실행

 

로컬과 서버에 각각 도커를 설치하고 이미지를 업/다운로드 가능한 Container Registry (Docker hub(public), AWS(private) 등) 을 이용한다.

댓글