도커이미지 직접 만들기

  27 Nov 2020


Docker 이미지 직접 만들기

  • Dockerhub에 이미 다른 사람들이 만들어 놓은것을 이용
  • 직접 도커 이미지를 만들어서 사용
  • 직접 만든것을 Dockerhub에 업로드 할 수도 있음

도커 이미지 생성하는 순서

  1. Docker file 작성
    • Docker file이란 Docker Image를 만들기 위한 설정파일
    • 컨테이너가 어떻게 행동해야 하는지에 대한 설정을 정의해줌
  2. 도커 클라이언트에 도커 파일 전달
  3. 도커 서버에 요청
    • 도커 클라이언트에 전달된 모든 중요한 작업들을 진행함
  4. 이미지 생성

Docker file 만들기

Docker file 이란

  • 도커 이미지를 만들기 위한 설정 파일
  • 컨테이너가 어떻게 행동해야 하는지에 대한 설정들을 정의해줌

도커 파일 만드는 순서 (도커 이미지가 필요한 것이 무엇인지를 생각하기)

  1. 베이스 이미지를 명시해준다 [파일 스냅샷에 해당]
  2. 추가적으로 필요한 파일을 다운받기 위한 몇가지 명령어를 명시 [파일 스냅샷에 해당]
  3. 컨테이너 시작시 실행될 명령어를 명시해줌 [시작 명령어에 해당]

베이스 이미지란?

  • 도커 이미지는 여러개의 레이어로 되어있음
  • 베이스 이미지는 이 이미지의 기반이 되는 부분
  • 레이어는 중간 단계의 이미지 👉 간단히 OS라고 생각해도 됨
  • 베이스 이미지를 쌓고 그 위에 여러 레이어(ex. nginx…) 를 쌓음

실습

  • FROM
    • 이미지 생성시, 기반이 되는 이미지 레이어
    • <이미지 이름="">:<테그> 형식으로 작성
    • 테그를 안붙이면 자동적으로 가장 최신것으로 다운받음
    • ex) ubuntu:14.04
  • RUN
    • 도커이미지가 생성되기 전에 수행할 쉘 명령어
  • CMD
    • 컨테이너가 시작되었을 때, 실행할 실행 파일 또는 쉘 스크립트
    • 해당 명령어는 Dockerfile내 1회만 쓸 수 있음

실행 시, $ docker run -it <이미지 id>

#베이스 이미지 명시
FROM baseImage
#추가적으로 필요한 파일들을 다운로드함
RUN commnad
#컨테이너 시작시 실행될 명령어를 명시
CMD [“executalbe”]

도커 파일로 이미지 생성하기

$ docker build ./ || .

  • Buile 명령어
    • 해당 디렉토리 내에서 dockerfile이라는 파일을 찾아 도커 클라이언트에 전달시켜줌

빌드 Step

  1. alpine 이미지 생성
    • 리눅스 중에서 가벼운 편
  2. 임시 컨테이너 생성
    • 하드 디스크에 파일 시스템 스냅샷 추가
    • 각종 명령어 또는 레이어를 임시컨테이너에 담음
  3. 임시 컨테이너로 이미지 생성
    • 베이스 이미지에서 각종 레이어가 쌓이고 완료가 되면 임시 컨테이너가 완성
    • 임시 컨테이너 기반의 새로운 이미지가 만들어 짐
  4. 임시 컨테이너가 삭제

정리

  • 베이스 이미지에서 다른 종속성이나 새로운 커맨드를 추가할 때는 임시 컨테이너를 만든 후, 그 컨테이너를 토대로 새로운 이미지를 만듬
  • 그리고 임시 컨테이너는 삭제

빌드 시 컨테이너에 이름주기

  • $ docker build -t <name> ./
  • ex) $ docker build -t victoriakk/hello:latest ./
  • -t 이후에 이름을 지어주면 됨
  • 일반적으로 docker -t를 사용하여 정할때, 저장소/프로젝트이름:버전 으로 지음
...