ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Docker] Docker Image를 직접 만들어 보기
    DevOps/Docker 2021. 3. 29. 14:38
    728x90
    반응형

    Docker 이미지를 직접 만들기

    1. Docker 이미지는 컨테이너를 만들기 위해 필요한 설정이나 종속성들을 갖고 있는 소프트웨어 패키지
    2. Docker 이미지는 Dockerhub에 다른 사람들이 만들어놓은 이미지를 다운받아 사용할 수도 있고 직접 이미지를 만들어 사용할 수도 있습니다.

    스크린샷 2021-03-29 오전 10 52 41

     

     

    이미지의 읽기 영역 vs 쓰기 영역

    스크린샷 2021-03-29 오전 11 44 36

    여기서 빨간 테두리는 읽기 영역, 초록색 테두리는 쓰기 영역을 할 수 있습니다.

    • 읽기 영역: ubuntu, centOS 등등 (수정할 수 없음)
    • 쓰기 영역: Git 설치, 모듈 설치 등등 (이미지에 추가할 수 있음)
    docker run -it --name git ubuntu:latest bash

    스크린샷 2021-03-29 오후 1 51 00

     

    위와 같이 ubuntu:bash 이미지에는 Git이 설치되어 있지 않습니다.

    apt-get update
    apt-get install -y git

    스크린샷 2021-03-29 오후 1 54 32

    git이라는 컨테이너를 ubuntu:git 태그로 commit을 해보겠습니다.

     

    스크린샷 2021-03-29 오후 1 57 25

    위와 같이 images가 생긴 것을 볼 수 있습니다.

     

    스크린샷 2021-03-29 오후 1 59 47

    위와 같이 새로 만든 이미지로 다시 접속을 했을 때는 git이 설치되어 있는 것을 볼 수 있습니다.

     

     

     

    Dockerfile 이란?

    Dockerfile 이란 Docker Image를 만들기 위한 설정 파일입니다. 컨테이너가 어떻게 행동해야 하는지에 대한 설정들을 정의하는 파일입니다.

     

    Dockerfile을 이용해서 이미지를 직접 만들어보겠습니다.

     

     

     

    Dockerfile 만드는 순서

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

     

     

    베이스 이미지란?

    스크린샷 2021-03-29 오전 11 04 03

    이미지는 layer들로 구성되어 있습니다. 이미지에 하나씩 레이어들을 더 추가할 수 있습니다.

     

     

     

    간단하게 Dockerfile로 hello 이미지 만들기

    # 베이스 이미지를 명시
    FROM alpine 
    
    # 추가적으로 필요한 파일들을 다운 받기
    # RUN ~~  (이번 실습에서는 적지 않음)
    
    # 컨테이너 시작 시 실행 될 명령어
    CMD ["echo", "hello"]

    Dockerfile을 만들어서 위와 같이 작성을 하겠습니다.

     

    docker build . (Dockerfile 실행하기) => Dockerfile이 있는 디렉토리에서 실행을 해야 함

    스크린샷 2021-03-29 오전 11 00 14

     

     

    실행과정 정리

    스크린샷 2021-03-29 오전 11 10 08

    1. 베이스 이미지 alpine 이미지를 먼저 다운 받기
    2. alpine 파일 스냅샷은 임시 컨테이너 하드디스크에 넣기
    3. 실행할 명령어를 컨테이너 안에 넣기
    4. 임시 컨테이너를 기반으로 새로운 이미지가 만들기(그리고 임시 컨테이너는 삭제)

     

    스크린샷 2021-03-29 오전 11 12 40스크린샷 2021-03-29 오전 11 15 20

    그래서 직접 만든 이미지를 위와 같이 실행을 하면 hello가 출력되는 것을 볼 수 있습니다.

     

    docker run -it ImageID

    근데 위에서 보면 알 수 있지만 ImageID를 기억하기란 쉽지가 않습니다. 그래서 이번에는 Image에 직접 이름을 지어보겠습니다.

     

     

     

    Docker Image에 이름 주기

    docker build -t 도커아이디/이미지이름 디렉토리경로(dockerfile 존재하는) . (이름은 아무거나 주어도 되지만 보통 이미지를 만드는 규칙은 이렇습니다.)
    docker build -t wjdrbs96/hello:latest .
    
    docker run -it wjdrbs96/hello:latest (잘 실행되는 것을 알 수 있음)

    스크린샷 2021-03-29 오전 11 17 59

    위와 같이 docker run -it 이미지이름으로도 잘 실행되는 것을 볼 수 있습니다.

    반응형

    댓글

Designed by Tistory.