[Docker] docker image란? 도커 이미지 만들기

Hello! ·2023년 2월 21일
0

Docker

목록 보기
3/3
post-thumbnail

아래 내용은 인프런 강의 초보를 위한 도커 안내서를 정리한 내용입니다.

1. 도커 이미지란?


  • commit 으로 하는 방식과 build하는 방식으로 이미지를 생성할 수 있음

  • 도커는 레이어드 파일 시스템 기반임

    • 레이어드 파일 시스템이란 ?
  • 이미지는 프로세스가 실행되는 파일의 집합(환경)

    • 리눅스라 하면 여러개의 파일이 있으면 이 파일이 전체 다 필요함(이걸 압축해놓은 것임)
  • 프로세스는 환경(파일)을 변경할 수 있음

  • 이 환경을 저장해서 새로운 이미지를 만듬

  • 이미지는 읽기 전용 VS 쓰기 전용 이 두가지로 나뉨

    • 읽기 전용
      • 수정할 수 없는 영역
      • 예시로 우분투 이미지는 내가 수정할 수 없지만 새롭게 추가 수정 삭제할 수 있는 것임
  • 베이스 이미지에 깃을 추가해서 새로운 커스텀 이미지를 만들 수 있음

  • 도커 이미지 네이밍 규칙

    docker build -t mysname/ubuntu:airflow

  • 도커 우분투에 깃 이미지 설치하여 이미지 생성
    docker run -it --name git ubuntu:latest bash 
    
    # apt-get update
    # apt-get install -y git
    # git --version
    
    docker images | grep ubuntu
    docker commit git ubuntu:git
    docker images | grep ubuntu

2. Dockerfile


  • 서버에 직접 입력하는 과정을 하나의 파일로 관리

    • 최초부터 어떤 과정을 걸처 프로그램이 설치된 것인지 관리하기 편함
  • build로 생성하는 도커 이미지를 만들기

  • 도커파일 명령어

    FROM기본 이미지
    RUN쉘 명령어 실행
    CMD컨테이너 기본 실행 명령어(Entrypoint의 인자로 사용)
    EXPOSE오픈되는 포트 정보
    ENV환경변수 설정
    ADD파일 또는 디렉토리 추가. URL/ZIP 사용가능
    COPY파일 또는 디렉토리 추가
    ENTRYPOINT컨테이너 기본 실행 명령어
    VOLUMNE외부 마운트 포인트 생성
    USERRUN, CMD, ENTRYPOINT를 실행하는 사용자
    WORKDIR작업 디렉토리 설정
    ARGS빌드타임 환경변수 생성
    LABELkey-value 데이터
    ONBUILD다른 빌드의 베이스로 사용될 떄 사용하는 명령어

(1) 이미지 빌드하기

# docker build -t {이미지명:이미지태그} {빌드 컨텍스트}
docker build -t sample:1
  • 현재 디렉토리의 Dockerfile로 빌드
    • -f <Dockerfile 위치> 옵션을 사용하여 다른 위치의 도커 파일 사용 가능
    • -t 명령어로 도커 이미지 이름을 지정함
    • {네임스페이스}/{이미지명}:{태그} 형식
  • 마지막에는 빌드 컨텍스트 위치(경로)를 지정
    • 현재 디렉터리를 의미하는 곳을 주로 사용 → .
    • 필요한 경우 다른 디렉터리를 지정할 수 있음
  • [참고] .dockerignore
    • .gitignore 과 비슷한 역할
    • 도커 빌드 컨텍스트에서 지정된 패턴의 파일을 무시함
    • .git이나 민감한 정보를 제외하는 용도로 주로 사용
    • .git이나 에셋 디렉터리만 제외시켜도 빌드 속도 개선
    • 이미지 빌드 시에 사용하는 파일은 제외시키면 안 됨

(2) Dockerfile 생성

FROM ubuntu:latest # 이미지명을  
RUN apt-get update # 
RUN apt-get install -y git # 

(3) build 명령어를 이용한 이미지 빌드

docker build -t ubuntu:git-dockerfile .
docker images | grep ubuntu
profile
Let's study

0개의 댓글