Dockerfile Entrypoint

이진영·2022년 10월 10일
0

Docker

목록 보기
4/10
post-thumbnail

생성일: 2022년 2월 13일 오후 3:29
태그: Dockerfile

ENTRYPOINT

  • ENTRYPOINT는 docker run시에 함께 넣어지는 CMD명령에 덮어씌워지지 않고, 반드시 실행해야 하는 명령을 기입할 때 사용
    • 이때, docker run시 함께 넣어지는 명령은 ENTRYPOINT에 작성된 명령의 인자로 넣어지게 됨
    • 따라서 실행시 반드시 실행되야 하는 명령을 넣고, 별도로 각 컨테이너 생성시 필요한 인자는 docker run에 넣는 식으로도 활용하기도 함
  • 실습
  1. 기존에 있는 도커 파일에 CMD 공간을 ENTRYPOINT로 대체하자
ENTRYPOINT ["bin/sh"]
  1. build를 아이디를 지정하여 해준다.
  2. 그다음 도커 런을 해주자
docker run -dit -p 9999:80 --name httpdweb3 myweb3

그런데!! 생성은 되었지만 오류가 뜨는 것을 할 수 있다.

이러한 이유는 바로 이미 포트 번호가 할당이 되어있어서 그런다!

Docker ps를 통해서 간략하게 확인하면

이미 포트가 할당 된 것을 볼 수 있다. 우리는 이것의 실행을 멈춰줄 거다

—> stop 과 rm 명령어를 활용하자!

Untitled

잘 실행되는 것을 볼 수 있다.

  1. inspect를 통해서 정상적으로 들어가 있는 것을 볼 수 있다.


간단하게 echo기능을 알아보자

  • 인자에 있는 내용을 출력해주는 명령어

RUN

  • docker는 이미지 생성시 , 각 단계를 layer로 나누어 작성함
    • 이를 통해 특정 단계 변경시, 전체 이미지를 다시 다운로드 받지 않아도 됨

쉽게 말하면!!

예를 들어 저희가 패키지를 업데이트 할때 이미지가 생성되게 되는데

이미지 층을 그대로 쌓이면서 이미지가 만들어지게 된다.

이런 기존에 있는 이미지 층을 RUN이라는 명령어를 통해서 무언가 추가적으로 덮어씌울 때 사용이된다.


  1. 도커 파일을 만들어 주자(여기서는 아파치 서버를 사용할 것이다)

    vi Dockerfile-apache
  2. 파일명은 다음과 같이 해주자!

    FROM ubuntu:18.04
    LABEL maintainer="dream@fun-coding.org"
    
    RUN apt-get update #패키지 정보 업데이트 / layer1
    RUN apt-get install -y apache2 #layer2
    
    COPY ./2021_DEV_HTML /var/www/html/
    
    ENTRYPOINT ["/usr/sbin/apache2ctl","-D","FOREGROUND"]

    유념해야할점!! 각각의 패키지 / 버전 마다 다르다!!

    apache2는 폴더(/var/www/html)로 다르다!!

    and "/usr/sbin/apache2ctl","-D","FOREGROUND" 도 동일하게 조금은 다르다!

  3. build—>이번엔 좀 길다

    docker build --tag myweb4 -f Dockerfile-apache .
  4. RUN —> 홈페이지가 뜨는 것을 볼 수 있다.

    docker run -dit -p 9999:80 --name httpdweb4 myweb4
  • 번외로 apache2와 함께 apt-utils를 설치해보자!
FROM ubuntu:18.04
LABEL maintainer="dream@fun-coding.org"

RUN apt-get update #패키지 정보 업데이트 / layer1
RUN apt-get install -y apache2 apt-utils #layer2

COPY ./2021_DEV_HTML /var/www/html/

ENTRYPOINT ["/usr/sbin/apache2ctl","-D","FOREGROUND"]

근데 기존과 달리 빨리 다운받아지는 현상이 발생하는데!! 이는 이미 다운받은 이력이 있어서 이렇게 빠르게 받아진다. —>캐시가 있기 때문에

profile
내가 공부한 것들을 적는 공간

0개의 댓글