[Codecamp-Week8] Docker

·2022년 8월 26일
0

우영우 고래가 떠있는 귀엽다고만 생각한 Docker가 이렇게 무지막지하게 어려운 것일줄이야?
(하지만 여전히 아이콘은 귀여운걸...)

Docker는 시간을 갖고 차근차근 공부를 더 해나가야 할 것 같다

1. Docker란?


도커는 컨테이너 기반의 오픈소스 가상화 플랫폼이다.
도커는 개발 환경 요소들이 설치된 모습을 이미지로 저장하고, 저장한 이미지를 클라우드에 올린다.
이미지들이 서로 연결돼서 동작하는 설정을 문서 (Dockerfile)로 저장하며, 새 컴퓨터에 가서 복사한 문서의 내용대로 이미지를 다운받아 설치한다.
가상 머신과 비슷하지만 가상 머신보다 빠르고 자원을 효율적으로 사용한다.

EC2는 화면을 닫을 경우 실행이 멈춘다는 문제점이 있는데, docker를 활용할 경우 해당 창을 닫더라도 지속적으로 실행된다.
따라서, 배포 후 24시간 켜있어야 하는 front server 유지에 도움을 준다.


[왼쪽: 가상머신 / 오른쪽 : Docker]

(1) Container

서버에서의 컨테이너란 다양한 프로그램, 실행 환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순하게 해주는 것을 의미한다.
즉 도커는 컴퓨터 속 가상 공간에 모든 버전과 세팅이 동일한 가상 컴퓨터를 하나 더 설치해주는데 도움을 주는 툴이라고 할 수 있다.

회사에 새로운 신입사원이 들어올 경우, React 몇 버전, Next js 몇 버전 등등 여러 다양한 프로그램의 버전을 하나씩 알려주며 하나하나 다운받게 한다면 정말 똑같이 다운받았다고 하더라도 컴퓨터 환경에 따라 다르게 실행될 수 있다.
따라서 모든 조건이 동일한 가상 컴퓨터를 한 번에 다운받을 수 있도록 도커가 도와준다.

해당 가상 컴퓨터 즉, 컨테이너에 접속하여 실제 컴퓨터처럼 명렁어를 입력할 수 있고 apt-get이나 yum으로 패키지를 설치할 수도 있다.

(2) Image


이미지란 컨테이너 실행에 필요한 파일과 설정값 등을 포함하고 있는 것으로, 변하지 않는다.
컨테이너는 이미지를 실행한 상태라고 볼 수 있고, 추가되거나 변하는 값은 컨테이너에 저장된다.

같은 이미지에서 여러 개의 컨테이너를 생성할 수 있고, 컨테이너의 상태가 바뀌거나 컨테이너가 삭제되더라도 이미지는 변하지 않고 그대로 남아있다.

2. Docker 셋팅

(1) Docker 설치하기

docker 홈페이지에 접속해 설치하기

(2) Dockerfile 셋팅

Docker Hub에서 Node js, yarn이 설치돼 있는 ubuntu를 한 번에 설치하기 위해 Dockerfile을 생성해준다.

FROM node:14

COPY . /class_build/
WORKDIR /class_build/

RUN yarn install
RUN yarn build
# CMD = docker-compose build 시 이미지로 저장되지 않음 (RUN은 저장)
CMD yarn start

(3) .dockerignore 셋팅

가상 컴퓨터에 따로 프로그램을 설치해주므로 배포를 위한 폴더 안에 있는 node_modules는 가상 컴퓨터에 업로드되어선 안된다. 따라서 .dockerignore 파일을 생성해준다.

node_modules

(4) docker-compose.yaml 셋팅

version: "3.7"

services:
  class_build:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - 3000:3000

3. Docker 실행하기

docker-compose build
docker-compose up

실행 중인 도커 목록 보기

docker ps

도커에 접속하기 (언제든 ctrl+c로 끝낼 수 있는 방법)

dockr exec -it 도커컨테이너ID /bin/bash

도커에 접속하기 (연결을 끊지 않는 한 ctrl+c로 끊을 수 없는 방법)

// 끊이지 않게 접속하는 방법
docker-compose up -d

// 연결 끊는 방법
docker-compose stop
profile
개발을 개발새발 열심히➰🐶

0개의 댓글