본문 바로가기
CODE/Docker

Docker build (빌드) 해보기

by Nuridal_class 2023. 12. 26.
728x90
728x90

 Docker build는 무엇인가?

Dockerfile로 이미지를 만드는 것이라고 보시면 됩니다
프로젝트를 할 때 팀원들끼리 정해진 환경세팅을 할 때 주로 사용하게 될 것입니다

 

Docker file 작성하기

dockerfile은 image를 생성하기 위한 설정 파일이며 txt 형식입니다
이 dockerfile안에 배포할 내용들을 하나씩 적어주면 됩니다

 

 Dockerfile 옵션

파일에 사용하게 되는 옵션들인데
글씨만 봐서는 어떤 기능들을 수행하는지 어려움이 있다
직접 하나씩 해보는것을 권장합니다
👉 FROM : 기본 이미지 [ image id ] :[ tag ]
👉 ARG : [ KEY ] = [ VALUE] 환경 변수 설정
      => build 시점에서만 사용되는 변수, --build-arg 옵션으로 오버라이딩 가능
👉 ENV : [ KEY ] = [ VALUE ] 환경 변수 설정
      => --e 옵션으로 오버라이딩 가능
👉 RUN : 도커 이미지를 빌드하는 순간 실행되는 명령어
👉 CMD : 컨테이너가 실행할 때 수행되는 명령어
      => docker run 할때 변경이 가능
      => ex) dockerfile에 CMD ["echo", "cmdText"],
                 docker image는 cmd_test 가정 
                 docker run cmd_test echo hello 수행 결과 hello
👉 ENTRYPOINT : 컨테이너가 실행할 때 수행되는 명령어
      => 컨테이너가 최초에 꼭 실행되어야 할때 사용
      => ex) dockerfile에 ENTRYPOINT ["echo", "entrypointText"],
                 docker image는 entrypoint_test 가정
                 docker run entrypint_test echo hello 수행결과 entrypintText echo hello
👉 ADD : 로컬 파일 경로 / Docker image의 파일경로 추가
👉 COPY : 로컬 파일 경로 / Docker image의 파일경로 복사
👉 WORKDIR : RUN, CMD, ENTRYPOINT, COPY, ADD 명령이 실행될 작업 디렉터리 설정
👉 LABEL : [ KEY ] = [ VALUE ] 버전, 작성자, 설명 등 메타데이터 추가
👉 VOLUME : 호스트 시스템 디렉터리 마운트
👉 USER : 명령을 실행할 때 사용할 사용자 이름 or UID 설정
👉 EXPOSE : 호스트와 연결할 포트를 설정

 

 Dockerfile 옵션 예시

아래는 각각의 옵션들을 사용하는 예시를 써놓았습니다
# 1. 기본 이미지 설정
FROM ubuntu:18.04

# 2. 환경 변수 설정
ARG MY_ARG=default_value
ENV MY_ENV=production

# 3. 도커 이미지를 빌드하는 순간 실행되는 명령어
RUN apt-get update && apt-get install -y \
    python3 \
    python3-pip

# 4. 로컬 파일 경로 / Docker image의 파일경로 복사
COPY ./app /app

# 5. 작업 디렉토리 설정
WORKDIR /app

# 6. 메타데이터 추가
LABEL version="1.0" \
      maintainer="example@example.com" \
      description="This is an example of a Dockerfile"

# 7. 호스트 시스템 디렉토리 마운트
VOLUME /data

# 8. 명령을 실행할 때 사용할 사용자 이름 or UID 설정
USER root

# 9. 호스트와 연결할 포트를 설정
EXPOSE 5000

# 10. 컨테이너가 실행할 때 수행되는 명령어
CMD ["python3", "app.py"]

# 11. 컨테이너가 최초에 꼭 실행되어야 할때 사용
ENTRYPOINT ["echo", "Welcome to my Docker Image!"]

 

 Dockerfile 만들어보기

메모장을 열어서 간단하게 만들어봅시다
//👉 기본 이미지 설정
FROM ubuntu:16.04

//👉 작업 디렉토리 설정
WORKDIR /app

//👉 test.text 파일을 app 폴더에 추가
ADD /test.txt /app

//👉 호스트와 연결할 포트 설정
EXPOSE 80

//👉 컨테이너가 실행될 때 수행되는 명령어
CMD cat test.txt

 

 Docker 빌드 해보기

test.txt 내용
hello docker test!!

docker build [option] [dockerfile 경로]

ex) docker build -t test:0.1 .
    => -t [image = test] : [tag = 0.1] .(dockerfile 이 경로안에 있을 경우)

 

 수행 결과

docker build를 정상적으로 수행하면 아래의 사진과 같이 나오고

 

docker image로 생성된 이미지를 확인해 보면 아래 사진과 같이 나온다

 

💡 그리고 docker run으로 명령어 text.txt를 실행했을 때
     hello docker test!!라는 명령어가 보이면 제대로 빌드해서 실행한 것입니다

이번 포스팅에서는 Docker build를 하는 방법에 대해서 알아보았습니다이렇게 해도 사실 복잡한게 dockerfile이기 때문에 간단한 것 부터 하나씩 해보시는것을 추천드립니다그럼 코딩이 쉬워지는 그날까지!!
728x90
300x250