ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Docker) Docker Image 생성 실습해보기
    Cloud/Docker 2022. 10. 4. 12:35
    실습 환경 : AWS console (2022/10), Visual Studio Code
    실습 목적 : Docker Image를 통해 conatiner를 생성

    Docker Image

    • Docker Image는 container를 생성하기 위한 목적으로 사용한다.
    • Docker Hub를 통해 미리 작성된 Docker Image를 다운로드 하는것이 일반적이다.
    • 사용자가 원하는 형태의 Image를 별도로 생성할 수 있고, 필요하다면 registry를 통해 배포할 수도 있다.


    Docker Image 생성하기

    Dockerfile


      #  Dockerfile은 image 생성 내용을 기술한 텍스트 파일이다.
      #  Dockerfile을 빌드하여 image를 생성한다


      #  Dockerfie 주요 명령어

          FROM
              -- 생성하려는 image의 base image 지정
              -- hub.docker.com에서 제공하는 공식 image 사용을 권장한다.
              -- 크기가 적은 base image를 사용해야 이미지 전체의 크기를 줄일수 있다.
              -- tag를 지정하지 않으면 latest버전으로 지정된다.

          -  RUN
              -- 설정된 기본 이미지에 패키지 업데이트, 각종 패키지 설치, 명령 실행 등을 작성한다.
              -- 1개 이상 작성 가능하다.


          -  CMD
              -- 생성된 Docker image를 container로 생성하여 실행할 때 실행되는 명령을 기술한다.
              -- ENTRYPOINT 명령문으로 지정된 명령에 default로 넘길 파라미터를 지정할 때 사용한다.
              -- 여러개의 CMD 명령을 사용해도 마지막 한개의 CMD만 처리한다.
              -- 일반적으로 image의 container 실행시
                  application daemon이 실행 되도록 하는 경우 유용하다.


          -  ENTRYPOINT
              -- 생성된 Dokcer image를 container로 실행할때 실행되는 명령
              -- container 실행시 명령 및 인자값을 전달하여 실행한다는것이 CMD와의 차이점이다.
              -- 여러 CMD를 사용하는 경우 ENTRYPOINT 명령과 함꼐 사용한다.


          -  COPY
              -- Host에 있는 파일을 Docker image에 복사하는 명령
              -- 통상적으로, Dockerfile간 같은 디렉토리에 있는 파일을 Docker image에 복사할 때 사용한다.


          -  EXPOSE
              -- container가 host 네트워크를 통해 들어오는
                 트래픽을 listening하는 포트와 프로토콜을 지정한다.


          -  WORKDIR
              -- container상에서 작업할 경로의 전환을 위해 사용한다.
              -- WORKDIR을 지정하면 RUN, CMD, ENTRYPOINT, COPY 명령은
                 해당 디렉토리를 기준으로 실행하게 된다.



      #  Build 명령어

    docker build <Dockerfile 위치> -t <image 이름><TAG>

      Dockerfile을 이용하여 Docker image를 생성하는 명령어다.
      #  -t 옵션을 사용하면 docker image에 tag추가를 허용한다.
      #  <사용자 ID>는 docker image를 docker registry에 upload할 때 사용한다. (생략가능)


      #  실습

      # 파일 저장 디렉토리 생성 및 웹서버에서 동작할 html 과 js 파일을 복사한다.
          - mkdir calc-ubuntu
          - html 파일 : index.html
          - js 파일 : calc.js


    FROM ubuntu:18.04
    
    RUN apt-get update && \
         apt-get install -y apache2
    
    COPY ./index.html /var/www/html
    COPY ./calc.js /var/www/html
    
    EXPOSE 80
    
    CMD [ "/usr/sbin/apache2ctl", "-DFOREGROUND" ]

      #  image 생성에 필요한 Dockerfile를 생성한다.


    docker build calc-ubuntu -t calc-ubuntu:0.1
    # docker build <Dockerfile 위치> -t <image 이름><TAG>

      #  build 명령으로 Dockerfile 파일위치를 지정하여 이미지 생성한다.


      #  생성된 이미지를 확인한다.


    docker run -dit -p 80:80 --name calc-web calc-ubuntu:0.1

        #  생성된 이미지로 웹서비스가 가능한 container 생성


        #  container가 Dockerfile형식대로 잘 생성되었는지 확인한다.


        #  외부접속이 잘 되는지 확인한다.



    docker commit


      #  현재 동작중인 container로 image 생성
      #  docker commit 명령을 통해 image를 생성한다.


    docker commit <Run 상태인 container ID 또는 NAMES> <생성할 imagae 이름>

      #  docker commit 명령으로 python-run을 lotto-python 이미지로 생성 (:0.1은 버전정보, TAG)


    docker run -it --rm <container ID 또는 NAMES> <Image 이름>

      #  생성한 이미지로 container 생성 및 파일 실행




    참고 자료

    Dockerfile 명령어 참고자료 : https://docs.docker.com/engine/reference/builder/



    댓글

Designed by Tistory.