컨테이너의 혁명?! 도커

docker(도커)란?

docker홈페이지 바로가기

image with caption

도커는 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼이다.

소프트웨어를 컨테이너라는 표준화된 유닛으로 패키징하며, 컨테이너는 라이브러리, 시스템 도구, 코드 등 소프트웨어 실행에 필요한 모든 것이 포함되어 있다. 즉, 도커는 컨테이너 환경에서 독립적으로 애플리케이션을 실행할 수 있도록 컨테이너를 만들고 관리하는 것을 도와주는 도구이다.

그래서 도커를 통해 애플리케이션을 실행하면 일관된 결과를 보장한다.

Docker와 VM 비교

도커와 VM비교

도커와 VM은 비슷하지만 도커의 경우 몇가지 장점이 있다. 위의 사진을 보더라도 도커가 가상머신보다 볼륨이 적기 때문에 좀 더 작고 빠른 장점이 있다.

도커를 사용하는 이유

  1. 개발 / 배포환경을 통일하기 위해
  2. 프로그램을 미리 설치하기 위해
  3. 가벼운 가상컴퓨터를 사용하기 위해

Docker-compose의 이해

여러가지 컨테이너를 다룰 때 좀더 복잡한 설정이 필요하게 되는데 여기서 Docker-compose를 사용한다. docker-compose.yml 파일을 만들어 설정을 적어두고, docker-compose up 명령어를 입력해서 컨테이너를 실행합니다.

docker-compose.yml 파일 예시

version: "3.9"  
services:
  web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/code
      - logvolume01:/var/log
    links:
      - redis
  redis:
    image: redis
volumes:
  logvolume01: {}

Dockerfile

컨테이너를 실행하기 전에 먼저 해줘야할 것은 이미지를 만드는 것입니다. Dockerfile 이라는 이름의 파일을 만들고 이미지를 만들기 위한 명령어를 입력합니다. 그리고 docker-compose build 명령어를 통해 이미지를 만들게 됩니다.

FROM node:12

#  디렉터리 생성
WORKDIR /usr/src/app

#  의존성 설치
# 가능한 경우(npm@5+) package.json과 package-lock.json을 모두 복사하기 위해
# 와일드카드를 사용
COPY package*.json ./

RUN npm install

#  소스 추가
COPY . .

EXPOSE 8080
CMD [ "node", "server.js" ]

환경 변수 설정 Dockerfile 안에서 환경 변수를 설정하고 싶은 때는 ENV 명령어로 설정한다.

ENV [key] [value]
ENV [key]=[value]