Docker

개요

  • Docker : 데이터나 프로그램을 격리시키는(컨테이너) 기능을 제공하는 소프트웨어

도커는 리눅스와 비슷한 환경의 인터페이스를 소프트웨어에게 제공하고, 소프트웨어의 명령을 도커 엔진을 통해 리눅스 운영체제의 커널에 명령을 전달한다. 커널 자체가 여러개 있지는 않아 가상화보다 가볍다.

도커는 데이터를 도커 외부에 저장해둔다. 즉 컨테이너가 어떠한 이유로 폐기되더라도 데이터를 복구할 수 있다는 의미다.

도커의 장단점

장점

  • 한 대의 물리 서버에 여러 대의 서버를 띄울 수 있다.
  • 서버 관리가 용이하다

단점

  • 리눅스용 소프트웨어만 지원한다.
  • 호스트 컴퓨터의 변화가 컨테이너 전체에 영향을 미친다.

도커의 주 용도

  • 팀원에게 동일한 개발환경 제공
  • 테스트 환경 생성
  • 동일 서버가 여러 대 필요한 경우

컨테이너의 필요성

일반적으로 프로그램을 하나의 환경에서 하나만 설치될 수 있다. 그런데 프로그램 A와 프로그램 B가 공동으로 사용하는 프로그램의 요구 버전이 서로 다르면 둘 중 하나는 동작하지 않을 것이다. 이런 상황들 때문에 컨테이너가 필요하게된 것이다.

컨테이너는 자유롭게 옮길 수 있기 때문에, 개발 서버에서 운영 서버로 쉽게 옮길 수 있고, 리눅스만 실행되는 환결이라면 물리적 환경이나 서버 구성의 차이를 무시할 수 있다.

Dockerfile

FROM node // 베이스 이미지
WORKDIR /app // 작업 디렉토리
COPY . . // 복사
RUN npm install // 커맨드 실행
ENV VERSION=1 // 환경변수 설정
CMD ["npm", "run", "dev"] // 컨테이너 시작 시 실행할 커맨드