[Docker] 도커 공홈 따라하기

김맥스·2023년 8월 8일

데브옵스

목록 보기
4/8
post-thumbnail

1. Get the app

도커 공홈에서 제공해주는 예시 레포 클론

$ git clone https://github.com/docker/getting-started-app.git

2. Build the app’s container image

  1. 컨테이너 이미지를 빌드하기 위해선, Dockerfile이 필요함

  2. 앱 디렉토리에서, package.json과 동일한 위치에 Dockerfile을 생성

    $ touch Dockerfile
  3. Dockerfile 작성

    # syntax=docker/dockerfile:1
    
    FROM node:18-alpine
    WORKDIR /app
    COPY . .
    RUN yarn install --production
    CMD ["node", "src/index.js"]
    EXPOSE 3000
  4. 컨테이너 이미지 빌드하기

$ docker build -t getting-started .
  • 앱 디렉토리로 위치 후 아래 명령어로 컨테이너 이미지 빌드
  • docker build 명령어 : Dockerfile을 사용해서 새 컨테이너 이미지를 빌드함
  • -t 명령어 : 이미지에 태그 붙이기. 단순하게 이름표 같은 것
  • getting-started 명령어 : 이미지 이름
  • . 명령어 : 도커에게 현재 디렉토리에서 Dockerfile을 찾도록 지시

3. Start an app container

이미지를 가지고 있으니, 컨테이너 안에서 애플리케이션을 실행시킬 수 있다

$ docker run -dp 127.0.0.1:3000:3000 getting-started
  • docker run 명령어 : 컨테이너 실행
  • -d 명령어 (--detach) : 컨테이너를 백그라운드에서 실행
  • -p 명령어 (--publish) : 호스트와 컨테이너 간의 포트 매핑
    • HOST:CONTAINER = 호스트 주소:컨테이너 포트
    • 위에서는 컨테이너 3000 포트를 호스트 127.0.0.1:3000로 게시하는 것 -> 포트 매핑없이는 호스트에서 애플리케이션에 액세스할 수 없음
  • docker run이 성공적으로 실행되면 http://localhost:3000에 이제 앱이 뜨게 된다.

4. Update the source code

코드 수정이 생겼을 경우, 그냥 다시 빌드에서 실행시키면 에러가 나는데, 그 이유는 이전 컨테이너가 이미 호스트의 3000 포트를 사용하고 있기 때문이다. 오직 한 프로세스만 특정 포트를 사용할 수 있음. 따라서 기존 컨테이너를 제거하고 다시 빌드 후 실행시켜야 함

  • docker ps : 실행중이 도커 컨테이너 확인
  • docker stop <the-container-id> : 컨테이너 정지
  • docker rm <the-container-id> : 컨테이너 삭제

5. Share the application

빌드한 이미지를 공유할 수 있는 다양한 방법이 있는데, 공홈에서는 Docker Hub을 알려주고 있으나, AWS ECR을 통해 관리하는 법을 업로드할 예정!

profile
3년차 백엔드 개발자의 공부 기록

1개의 댓글

comment-user-thumbnail
2023년 8월 8일

많은 것을 배웠습니다, 감사합니다.

답글 달기