도커 공홈에서 제공해주는 예시 레포 클론
$ git clone https://github.com/docker/getting-started-app.git
컨테이너 이미지를 빌드하기 위해선, Dockerfile이 필요함
앱 디렉토리에서, package.json과 동일한 위치에 Dockerfile을 생성
$ touch Dockerfile
Dockerfile 작성
# syntax=docker/dockerfile:1
FROM node:18-alpine
WORKDIR /app
COPY . .
RUN yarn install --production
CMD ["node", "src/index.js"]
EXPOSE 3000
컨테이너 이미지 빌드하기
$ docker build -t getting-started .
docker build 명령어 : Dockerfile을 사용해서 새 컨테이너 이미지를 빌드함-t 명령어 : 이미지에 태그 붙이기. 단순하게 이름표 같은 것getting-started 명령어 : 이미지 이름. 명령어 : 도커에게 현재 디렉토리에서 Dockerfile을 찾도록 지시이미지를 가지고 있으니, 컨테이너 안에서 애플리케이션을 실행시킬 수 있다
$ docker run -dp 127.0.0.1:3000:3000 getting-started
docker run 명령어 : 컨테이너 실행-d 명령어 (--detach) : 컨테이너를 백그라운드에서 실행-p 명령어 (--publish) : 호스트와 컨테이너 간의 포트 매핑HOST:CONTAINER = 호스트 주소:컨테이너 포트코드 수정이 생겼을 경우, 그냥 다시 빌드에서 실행시키면 에러가 나는데, 그 이유는 이전 컨테이너가 이미 호스트의 3000 포트를 사용하고 있기 때문이다. 오직 한 프로세스만 특정 포트를 사용할 수 있음. 따라서 기존 컨테이너를 제거하고 다시 빌드 후 실행시켜야 함
docker ps : 실행중이 도커 컨테이너 확인docker stop <the-container-id> : 컨테이너 정지docker rm <the-container-id> : 컨테이너 삭제빌드한 이미지를 공유할 수 있는 다양한 방법이 있는데, 공홈에서는 Docker Hub을 알려주고 있으나, AWS ECR을 통해 관리하는 법을 업로드할 예정!
많은 것을 배웠습니다, 감사합니다.