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개의 댓글

관련 채용 정보