Docker에 들어가기에 앞서

Hwanny·2021년 1월 5일
0

Container, Docker

Container란?

기존 가상 머신과의 차이점

기존의 가상 머신은 호스트OS 위에 게스트OS(VMWare, VirtualBox 등으로 만든 가상 OS) 위에 각각의 애플리케이션을 배포하여 리소스를 격리 시킨다.

반면, Container를 사용하면 호스트OS 위에서 바로 리소스를 격리 시키기 때문에 메모리를 적게 차지하고, 빠르다.

Container를 운용하는 기술 Docker

Docker 라는 툴은 이러한 container를 가장 간단하고 빠르게 실행시킬 수 있는 기술.

두 가지 이상의 서버를 사용하다 보면 같은 사람이 똑같이 만들지 않는 이상 운영체제, 컴파일러, 설치한 라이브러리 (패키지) 등에서 차이가 날 수 밖에 없다.
그렇다고 매번 일일이 환경을 맞춰주기엔 자원의 낭비가 심함. (특히 시간)
따라서 애플리케이션을 환경에 구애 받지 않고 동적으로 실행할 수 있도록 지원하는 기술.

가령 A는 python2,7 환경에서 애플리케이션을 만들었고 B는 python3.7 환경에서 애플리케이션을 만들었다.
그러나 A가 B가 만든 애플리케이션을 동작 시키기 위해선 버전업을 해야 할 수 밖에 없다.
여기서 Docker를 사용하면 따로 python 3.7을 설치하지 않아도 애플리케이션의 실행이 가능하게 된다.

즉 애플리케이션을 코드로 추상화 시켜 배포하면 받는 사용자는 별도의 설치 없이 다운로드를 통해 실행이 가능함.
코드를 추상화 시킨다 라는 말은 다시 코드를 이미지화 시킨다 라고도 말할 수 있다.

FROM node:12.2.0-alpine

WORKDIR /app

ENV PATH /app/node_modules/.bin:$PATH

COPY package.json /app/package.json
RUN npm install
RUN npm install react-scripts@3.0.1 -g

CMD ["npm", "start"]력하세요

예를 들어 위와같은 Dockerfile을 작성하였을 때,

나는 node:12.2.0 버전을 통해서 필요한 패키지를 인스톨할 것이고 npm start 라는 커맨드를 통해 실행시키겠다.

라고 정의한 파일을 만들어 이미지화 시키기만 하면 이미지를 다운 받는 사용자는 node를 설치하지 않아도 바로 애플리케이션의 서비스가 가능하다.

profile
클라우드 아키텍트를 꿈꾸며

0개의 댓글