seok의 패치노트

[Docker] 이미지 만들기-2(build) 본문

DevOps/Docker

[Docker] 이미지 만들기-2(build)

석석's 2021. 10. 19. 15:53

저번시간에는 현재상태까지 스냅샷으로 찍어 새로운 이미지를 만들어내는 방식인 commit 방식에 대해 알아보았다

(못찾겠으면 여기로.. https://oneseok.tistory.com/51)

 

이번시간에는 아마도 현업에서 많이들 사용할 방식인 build 방식을 이용하여 이미지를 만들어보겠다.

 

build방식은 "Dockerfile" 이라는 어떠한 파일을 이용하여 이미지를 만드는 방식인데 이 "Dockerfile" 안에 같이 설치할 내용들을 적어두고 실행 시키는 방식이다.

이게 엄청나다!!..

 

commit처럼 bash 쉘에 들어가서 무언가 하는 작업(git을 설치한다던지..) 없이 그냥 뭐뭐 같이 설치할지 Dockerfile넣고 실행시키기만 하면된다, 

 

이렇게 Dockerfile 에 설치할 내용들을 명시해두면 히스토리의 역활 까지 같이 해주니 서버개발자들의 고통인 이전 담당자가 뭘 설치했는지 알수없는 그 두려움에서 자동으로 벗어날 수가 있다!!!!^^

 


 

build 

 1.  Dockerfile 만들기

     - 현재 내컴퓨터 특정 디렉터리에 파일을 만들고 설치 명령어를 작성한다.

 

  

특정 폴더에 Dockerfile 을 만든 모습

 

    - FROM 명령어를 사용하여 베이스 이미지를 지정하고 이미지가 생성될때 RUN으로 명령어 실행하기

 

Dockerfile 명령어를 작성

 

여기서 Dockerfile만들때 쓸수있는 명령어 목록을 한번 보고가자

 

명령어 내용
FROM 이미지를 만들때 필수로 필요한 기본 이미지를 지정할때
RUN 이미지를 만들기위해 컨테이너 내부에서 실행될 명령어
EXPOSE 허용 가능한 포트 지정하기(호스트와 나중에 연결할 포트 미리 열어두면 좋을듯?)
ENV 환경변수 설정하기
ADD 파일 또는 디렉터리 추가(URL,ZIP 추가 가능)
COPY 파일 또는 디렉터리 추가
CMD 컨테이너 시작 시마다 기본적으로 실행될 명령어 설정
(Entrypoint의 인자로 사용)
ENTRYPOINT 컨테이너 기본 실행 명령어
VOLUME 외부 마운트 포인트 생성
USER RUN, CMD, ENTRYPOINT를 실행하는 사용자 지정
WORKDIR 명령어를 실행할 디렉터리 이동
ARGS build 명령어를 실행할 때 추가로 입력을 받아 Dockerfile 내에서 사용될 변수의 값을 설정
LABEL 메타 데이터추가 (key:value 형태)
ONBUILD 다른 새로운 이미지가 빌드될때 그 새로운 이미지의 베이스가 되는 기본이미지로 지정될때 사용

 

 

2. 도커 이미지 빌드하기

    - docker build -t ubuntu:git-dockerfile .

      (docker build <옵션> <이미지이름>:<태그명> <Dockerfile 경로>)

      (현재 나는 Dockerfile이 있는 경로에서 명령어를 작성중이기 때문에 도커파일 경로는 "." 으로 현재 디렉터리라고

       표시하였다)

 

 

새로운 이미지가 만들어진 모습

 

 

3. 새로운 이미지를 실행시켜보기

 

내가 만든 이미지를 실행시켜 본 모습