Docker 의 개념

RumbleBi·2022년 7월 7일
0

Front-end

목록 보기
10/15
post-thumbnail
post-custom-banner

Docker 란?

Docker는 가상 머신처럼 독립된 실행환경을 만들어주는 것으로, 운영체제를 설치하는 것과 유사한 효과를 낼 수 있지만, 실제로는 운영체제를 설치하지 않기 때문에 설치 용량이 적고 실행 속도 또한 빠르다. 
또한 도커 컨테이너는 일종의 소프트웨어를 소프트웨어의 실행에 필요한 모든 것을 포함하는 완전한 파일 시스템 안에 감싼다. 여기에는 코드, 런타임, 시스템 도구, 시스템 라이브러리 등 서버에 설치되는 무엇이든 아우른다. 이는 실행 중인 환경에 관계 없이 언제나 동일하게 실행될 것을 보증한다.

여기서 중요한 점은 실행 중인 환경에 관계 없이 언제나 동일하게 실행된다는 점이다.
만약 여러 개발자들의 OS나 node 버전, 여러 환경변수들이 동일하지 않은 상태에서 개발을 진행한다면 어떤 사람은 문제가 없고 누구는 문제가 생길 가능성이 있기 때문에 Docker를 활용해 모두 동일한 개발환경을 구축하는 것이다. 또한 Docker를 사용하지 않는 경우, 환경을 구축하는 과정을 하나씩 캡쳐하고, 기록해서 방법을 정리해두기도 한다. 하지만, 가이드 문서가 있다고 한들 매번 이렇게 구축하는 것은 매우 번거로운 일이며 이를 간편하게 해주는 것이 바로 Docker다.

Docker 를 사용하는 이유

1. 구성 단순화

Docker는 컨테이너는 데스크탑, 데이터 센터 및 클라우드 등 모든 플랫폼에서 실행할 수 있다.
또한 자신이 원하는 환경변수도 설정이 가능하기도 하다. 생성된 Docker 이미지는 다른 환경에서도 사용할 수 있다.

2. 코드 관리

Docker는 일관된 환경을 제공하여 개발 및 코딩을 훨씬 편안하게 만들어준다. Docker 이미지는 변경이 불가능하기 때문에 개발환경에서 운영 환경까지 애플리케이션 환경이 변경되지 않는 불변성을 가지고 있다.

3. 개발 생산성 향상 

개발 환경을 운영 환경에 최대한 가깝게 복제할 수 있다. Docker를 사용하면 코드가 운영 환경의 컨테이너에서 실행될 수 있으며 VM과 달리 Docker는 메모리 용량이 적기에 여러 서비스를 실행하는데 부담이 적다. 또한 Docker의 Shared Volume을 사용하여 호스트에서 컨테이너의 어플리케이션 코드를 사용할 수 있도록 할 수 있다. 이를 통해 개발자는 자신의 플랫폼 및 편집기에서 소스 코드를 편집할 수 있으며, 이는 Docker내에서 실행 중인 환경에 반영이 가능하다.

4. 애플리케이션 격리

Web Server와 연결된 API 서버를 격리할 필요가 있는 경우가 있는데, 이 경우 다른 컨테이너에서 API를 서버를 실행할 수 있다(Docker-compose).

5. 빠른 배포 

컨테이너가 OS를 부팅하지 않고 어플리케이션을 실행하기 때문에 Docker 컨테이너를 매우 빠르게 만들 수 있다.

Images, Container

Docker Images

read only의 docker container를 생성하기 위한 템플릿이다. 하나의 image로 유사한 container를 만드는 것도 가능하다.

Container

Docker-compose

여러 개의 컨테이너로부터 이루어진 서비스를 구축, 실행하는 순서를 자동으로 하여, 관리를 간단히하는 기능이다. 즉 FE, DB, BE 등의 여러 컨테이너들을 한데 모아 묶는 개념이다. Docker-compose 파일을 준비하여 커맨드를 실행하는 것으로, 그 파일로부터 설정을 읽어들여 컨테이너 하나 하나 가동시킬 필요없이, 모든 컨테이너 서비스를 실행시키는 것이 가능하다.

아래는 개인 프로젝트 도커 배포 파일이다.

docker-compose.yaml

version: '3.3'

services:
  frontend:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - 1000:3000

Dockerfile

여러가지 명령어를 토대로 Dockerfile을 작성한 후 빌드하면
Docker는 Dockerfile에 나열된 명령문을 차례대로 수행하며 DockerImage를 생성해준다.
컨테이너를 실행하기 전에 먼저 해줘야할 것은 이미지를 만들어야 한다. Dockerfile은 DockerImage를 생성하기 위한 스크립트다. 그리고 위의 docker-compose.yaml를 만들었기 때문에 docker-compose build 명령어를 통해 이미지를 만들게 되는 것이다.

아래는 개인 프로젝트 SSR페이지 빌드시 사용했던 Dockerfile의 코드다.

Dockerfile

FROM node:16

WORKDIR /freeboard_frontend/
COPY . /freeboard_frontend/

RUN yarn install
RUN yarn build:ssr

CMD yarn start

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

ENV [key] [value]
ENV [key]=[value]
profile
기억보다는 기록하는 개발자
post-custom-banner

0개의 댓글