본문 바로가기

Container/Docker

[Docker] 도커 이미지 생성하기

728x90
반응형

도커 이미지 생성 순서

도커 이미지의 생성 순서는 다음과 같다.

  1. 도커 파일(Dockerfile)이라는 파일을 작성.
    • 도커 파일은 도커 이미지를 만들기 위한 설정 파일로, 컨테이너가 어떻게 행동해야 하는지에 대한 설정을 정의함.
  2. 도커 파일에 입력한 명령들이 도커 클라이언트에 전달.
  3. 도커 클라이언트에 전달된 명령어들을 도커 서버에서 처리해 도커 이미지를 만들어 줌.

 

 

도커 파일(Dockerfile) 만들기

도커 파일?

  • 도커 컨테이너가 어떻게 행동해야 하는지에 대한 설정을 정의하는 곳.
  • 도커 이미지 안에 무엇이 필요할지(명령어, 파일 스냅숏) 생각하면서 도커 파일을 작성해야 함.

 

 

작성 방법

  • 베이스 이미지를 명시(파일 스냅숏에 해당하는 부분)
  • 베이스 이미지 이외에 애플리케이션을 실행하는 데 필요한 파일들을 이미지 안에 내려받기 위한 명령어를 명시(파일 스냅숏에 해당하는 부분)
  • 컨테이너 시작 시에 실행할 명령어를 명시(애플리케이션 실행을 위한 명령어에 해당)

 

 

베이스 이미지란?

  • 도커 이미지는 여러개의 레이어로 구성되어 있는데, 그중 베이스 이미지는 생성하고자 하는 이미지의 기반이 되는 부분이며, 이미지를 만들기 위한 기본 이미지이기도 하다.
  • 예를 들어 어떤 프로그램을 위한 이미지를 만든다고 가정할 때 이 프로그램은 OS 위에 설치되어야 한다고 한다면 OS가 이미지를 만들기 위한 베이스 이미지가 되며 실제 프로그램을 위한 부분레이어가 된다.
    • 이때 레이어는 중간 단계의 이미지라고 생각하면 된다.
    • 레이어를 추가하는 행위를 "레이어 캐싱"이라고 한다.

 

도커 파일 작성

  • 먼저 도커 파일을 만들 폴더 하나를 생성한다.

  • 소스 코드 편집기를 실행한 다음 방금 생성한 폴더를 불러오고 도커 파일을 만든다.

  • 생성한 Dockerfile에 어떻게 도커 파일을 작성할지 기본적인 토대를 작성

  • FROM을 실제 값으로 변경, RUN 값 변경(예제에서는 이미 alpine에 들어 있기 때문에 넘어감), CMD에 명령어 명시

  • Buildkit 비활성화하기, 도커 18.09 부터 도커 이미지 빌드 시 기본으로 지원함.
    • 도커 파일을 빌드할 때 더 빠른 속도로, 효율적으로 빌드할 수 있게 해줌.
    • 실제로 도커를 사용 시 도커 Buildkit을 사용하는게 좋음.
    • 활성화 시 도커 이미지 아이디를 sha256으로 변환한 해시값으로 출력, 이 값으로도 도커 컨테이너 실행 가능.
    • Docker Desktop -> Settings(or Preferences) -> Docker Engine에서 buildkit 부분을 false으로 변경후 Apply & restart를 누르면됨.

 

 

도커 파일로 이미지 만들기

도커 파일에 입력한 명령어들을 도커 클라이언트로 전달해 도커 서버가 인식하게 해야 한다. 이를 위해 다음과 같은 명령어를 사용한다.

docker build ./
# 또는
docker build .

 

build 명령어?

  • 해당 디렉터리에서 Dockerfile이라는 파일을 찾아 도커 클라이언트에 전달한다.
  • 이때 . , ./는 둘다 현재 디렉터리를 의미한다.

[1/2] : alpine 이미지를 가져온다.

[2/2] : RUN에 관련된 처리를 한다.

 

 

빌드 과정

 

 

도커 이미지에 이름 붙여주기

도커 컨테이너 ID로 실행하기엔 길이가 너무 길어 번거롭다.

 

다음과 같은 명령어로 이름을 바꿀 수 있다.

docker build -t <나의 도커 아이디/저장소,프로젝트 이름:버전> .

728x90
반응형