docker image 생성하기

DevChoi·2024년 2월 28일

vsc 에서 docker image를 생성해보는 예제를 진행하자

[VSC docker extension install]

[sample 프로젝트 생성]

[Dockerfile 생성]

From node:16-alpine

  • node:16(node 16버전을 사용)-alpine(작은 단위의 리눅스)
  • node 에서 이미 만들어놓은 base Image를 사용

WORKDIR /app

  • 리눅스의 cd와 같은 기능
  • app 디렉토리로 이동

COPY package.json package-lock.json ./

  • package.json 과 package-lock.json 을 app 디렉토리로 복사

RUN npm ci

  • RUN npm install의 경우 최신버전의 설치하기 때문에 ci를 이용하여 현재 package.json의 버전을 그대로 설치하기 위함

COPY index.js ./

  • index.js를 app 디렉토리로 복사

ENTRYPOINT [ "node","index.js" ]

  • 실행시킬 script를 배열로 차례대로 입력

위의 명령어들은 layer로 구성되어 있는데 위에서부터 layer 0 ~ layer 5 으로 구성된다.
기존의 docker image 변경시 변경되지 않은 명령어는 캐싱하여 사용하고 변경된 layer 만 update 하기때문에 docker image를 빠르게 생성할 수 있다.

[build]

docker build -f Dockerfile -t dockersample .

  • -f (file) [PATH/docker file name]
  • -t (tag) [docker image name]
  • . (build context) 현재 경로

Docker image가 생성된것을 확인할 수 있다.

[run]

docker run -p 80:3000 --name dockerSample -d dockersample

  • -p 80(host port):3000(guest port)로 host와 guest는 독립적인 port를 가지고 있기 때문에 host port 와 guest port를 연결시켜줘야 한다.
  • --name dockerSample 컨테이너 이름을 지정한다.
  • -d detached(백그라운드)로 실행한다.
  • dockersample 위에서 생성한 docker image를 실행한다.

서버가 실행되고 있는것을 확인할 수 있다.

docker logs dockerSample 로 해당 서버의 로그를 확인할 수 있다.

[docker image 배포]

Docker hub로 들어가서 Repository를 생성한다.
https://hub.docker.com/

docker image를 push 하기 위해서는 위 그림의 빨간박스처럼 docker image 이름을 매칭 시켜줘야 한다.

docker tag dockersample [yourId/repositoryName]:tagname

  • docker image 명을 변경한다.

docker push [yourId/repositoryName]:tagname

docker Hub에 생성했던 Repository에 docker image가 업로드된 것을 확인할 수 있다.

참조 : https://docs.docker.com/reference/dockerfile/

출처 : https://www.youtube.com/watch?v=LXJhA3VWXFA&t=2s

0개의 댓글