[Docker] Docker 프로그램 개발 프로세스 + 실습

MINJI·2025년 3월 20일

Docker, Kubernetes(K8s)

목록 보기
4/4

⭐ Docker 사용 프로세스

  1. 먼저 대상 소프트웨어 선택
  2. Dockerization : Docker Image로 빌드 (Image로 바꾸기 위해서는 Dockerfile을 참고)
  3. Docker Image 실행 : Container를 통해 이미지 안의 소프트웨어 실행
  4. Docker Image 등록 : Docker Hub (Docker Registry)

1. Dockerfile 생성

  • Docker에게 소프트웨어 설치 명령을 기술
  • 먼저 베이스 이미지 기술 FROM
    • FROM <이미지이름>:<버전(숫자 or 문자)>
  • 다음으로 이미지에 포함이 될 코드 복사 COPY
    • COPY ./app
      • 현재 폴더(.)의 내용들을 /app으로 복사한다는 뜻
    • WORKDIR /app
      • /app으로 현재 디렉토리를 지정하겠다는 뜻
  • 마지막으로 코드 실행 CMD
    • CMD <실행하는 명령>

Dockerfile 사용 가능 기타 키워드

  • ARG : Docker Image를 만들 때 사용되는 변수 지정 (최종 이미지 X)
  • ENV : 컨테이너가 실행될 때 사용되는 환경변수 (최종 이미지 O)
  • USER : 컨테이너 실행할 때 사용할 유저ID
  • EXPOSE : 서비스 사용 포트번호
  • RUN : 빌드 시 실행되어야하는 명령들이 지정됨 (docker build)

CMD vs. ENTRYPOINT

  • container가 시작할 때 실행되어야 하는 명령어를 지정하는데 사용 (docker run)
  • 둘 다 한 Dockerfile에서 여러번 실행되면 각각 마지막 것만 사용됨
  • 최대한 CMD만 사용
  • ENTRYPOINT가 있으면 CMD 값이 파라미터로 실행됨
  • ENTRYPOINT가 없으면 CMD가 실행됨

2. Docker Image 생성 & 확인

이미지 생성

$ docker build --platform linux/amd64 -t <이미지이름> .

이미지 확인

$ docker image ls

3. Docker Container로 실행

  • CMD 명령이 실행됨 (ENTRYPOINT가 있으면 CMD 값이 파라미터로 된 ENTRYPOINT 명령이 실행)

$ docker run <이미지이름>

4. Docker Registry에 등록

Docker Hub 회원등록

https://hub.docker.com/

Create repository

  • Docker Hub -> Repositories -> Create repository (Public으로 생성)

Docker Hub에 이미지 올리기

  • 현재 docker 이미지 이름을 repo랑 똑같이 바꿔줌 (슬래시가 들어가게)

    docker tag <이미지이름>:<버전> <네임스페이스/이미지이름:버전>

  • 이미지를 Docker Hub에 올리기

    docker push <네임스페이스/이미지이름>

  • 그 전에 어카운트에 액세스 권한이 있는지 로그인을 하는 단계가 필요

    docker login --username=<사용자이름> (패스워드는 별도로 물어봄)

  • Docker Hub에서 결과 확인


⭐ 실습하기

실습 1 : Hello World 프로그램

1. 프로젝트 폴더 생성

mkdir hello-world-docker
cd hello-world-docker

2. app.js 파일 작성

  • 터미널 환경에서 아래 명령어를 입력하면 해당 파일명에 해당 내용을 넣어 만들 수 있음
echo "console.log("Hello Docker!");" > app.js

3. Dockerfile 작성

echo "FROM node:alpine COPY . /app WORKDIR /app CMD node app.js" > Dockerfile

파일 내용 확인하기

cat app.js
node app.js

4. 이미지 생성

docker build --platform linux/amd64 -t hello-world-docker . 

5. Docker Container로 실행

docker run hello-world-docker

6. Docker Registry에 등록

  • 해당 레포의 별칭(tag) 만들기 : minzmax/hello-world-docker
docker tag hello-world-docker minzmax/hello-world-docker
  • 로그인하기
docker login --username=minzmax
  • 이미지 push하기
docker push minzmax/hello-world-docker

7. 이미지 다운받고 리눅스 환경에 불러오기

docker pull minzmax/hello-world-docker
docker run hello-world-docker

0개의 댓글