Dockerfile?

😎·2023년 3월 25일
0

도커

목록 보기
4/6

위와 같이 docker 를 이용해서 Nginx, MySQL, Wordpress 를 갖고 있는 컨테이너를 만들고 싶다고 하자.

뭐가 필요할까? 바로 Dockerfile 이다.


Dockerfile 이란?

  • 도커는 기본적으로 이미지가 있어야 컨테이너를 생성하고 동작시킬 수 있다.
    dockerfile은 필요한 패키지를 설치하고 동작하기 위한 자신만의 설정을 담은 파일이고,
    이 파일로 이미지를 생성(빌드)한다. (Makefile과 비슷)

  • dockerfile은 도커 명령어를 순서에 따라 빌드하며, dockerfile을 빌드할 때(이미지 파일로 변환 시킬 때)는 layer 구조를 보인다. 이미지가 계층적으로 하나씩 쌓이면서 생성되는 것이다.

다음은 도커 파일이다.

FROM

  • 유효한 Docker 파일은 FROM 명령으로 시작해야 한다.

  • 새 작업을 시작할 베이스 이미지를 지정한다.

  • debian:buster 로 설정.

LABEL

  • 이미지에 메타데이터를 추가한다.

  • 이미지의 버전 정보, 작성자, 코멘트와 같이 이미지 상세 정보를 작성해두기 위한 명령.

RUN

  • 새 이미지 레이어를 만들어 내 명령을 실행하고 결과를 커밋한다.

  • 백슬래시(\)를 사용하여 다음 줄에 RUN 명령을 계속할 수 있다.

COPY

  • 호스트OS의 파일 또는 디렉토리를 컨테이너 안의 경로로 복사한다.

EXPOSE

  • 해당 컨테이너가 런타임에 지정된 네트워크 포트에서 수신 대기중 이라는것을 알려준다.

  • 일반적으로 dockerfile을 작성하는 사람과 컨테이너를 직접 실행할 사람 사이에서 공개할 포트를 알려주기 위해 문서 유형으로 작성할 때 사용한다.

  • 이 명령 자체가 작성된 포트를 실행하여 listening 상태로 올려주거나 하지는 않기 때문에, 실제로 포트를 열기 위해선 container run 에서 -p 옵션을 사용해야 한다.

docker run -p 80:80/tcp -p 80:80/udp ...
  • 프로토콜을 지정하지 않으면 기본값은 TCP.

CMD

  • 생성된 컨테이너를 실행할 명령어를 지정한다.

  • 도커 파일에 CMD가 두 개 이상 있는 경우 마지막 CMD만 유효하다.


정리

도커 이미지를 만들기 위해 도커파일이 필요하다. 위에서 설명한 옵션 외에도 다양한 옵션이 많다. 앞으로 프로젝트를 진행하며 필요한 명령어를 찾아서 사용해보자.

profile
jaekim

0개의 댓글