ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [docker] 도커파일 만들기1
    docker 2024. 12. 7. 00:03

    도커파일 만들기

     

    도커파일

    도커 이미지를 만들어주는 파일
    도커허브에 있는 도커 이미지가 아닌 나만의 도커 이미지를 만들고 싶을 수 있다.

    예를들어 내가 만든 nestJS 프로젝트가 있다. 내가 만든 nestJS 프로젝트 자체를 도커 이미지로 만들고 싶을 수있다.

    이때 도커파일을 이용하면 나만의 도커이미지를 만들 수 있다.


    도커파일 만들기

    FROM

    - 베이스 이미지를 생성하는 역할
    - 특정 초기 이미지를 기반으로 추가적인 세팅을 할 수 있다.
    - 여기서 특정 초기 이미지가 곧 베이스 이미지.
    -컨테이너로 미니 컴퓨터 환경을 구축할때 기본 프로그램이 어떤게 깔려있으면 좋겠는지 설정하는 옵션.

    예를들어 누군가는 JDK가 깔려있는 컴퓨터 환경이 세팅되기를 바랄 수도 있고, 누군가는 node가 깔려있는 컴퓨터 환경이 세팅되기를 바랄 수도 있다.


    FROM 사용

    FROM [이미지명]
    FROM [이미지명]:[태그명]

     

    (태그명 안적으면 기본값으로 :latest가 들어간다.)

     

    JDK 17 베이스 이미지로 컨테이너 띄워보기

    FROM openjdk:17-jdk


    도커파일로 도커이미지 생성

    docker build -t [이미지명]:[태그명] [도커파일위치]
    Docker build -t my-jdk17-server:beta .




    도커파일로 만든 도커이미지 디버깅하기

    디버깅을 하기위해서는 도커 컨테이너에 뭐가 깔려있는지 봐야한다.

    도커 컨테이너 내 작업이 다끝나면 기본적으로 종료된다.
    하지만 docker exec -it 는 실행중인 컨테이너에만 들어갈 수 있다.


    기존의 디버깅 방법들

    Docker logs
    Docker exec -it



    새로운 디버깅 방식

    ENTRYPOINT["/bin/bash", "-c", "sleep 500"] // 500초간 시스템을 일시정지시키는 명령어

     

    그래서 이부분을 도커파일에 추가해주었음.

    이제 docker exec -it를 통해 디버깅을 할 수 있다.

     


    COPY

    - 호스트에 있는 파일을 컨테이너로 복사한다

    - 디렉토리에 저장하기 위해서는 마지막에 /를 붙여줘야한다. (특정 디렉토리 내부에 저장하기)

     

    // 문법
    COPY [호스트 컴퓨터에 있는 복사할 파일의 경로] [컨테이너에서 파일이 위치할 경로]
    
    // 예시1
    COPY app.txt /app.txt  // 호스트의 app.txt를 컨테이너 app.txt에 복사
    
    // 예시2
    COPY *.txt /test-files/ // .txt의 모든 파일을 컨테이너의 test-files디렉토리로 복사



    작성된 도커파일

    FROM ubuntu // 우분투 베이스 이미지 사용
    
    COPY *.txt /test-files/
    
    ENTRYPOINT["/bin/bash", "-c", "sleep 500"] // 500초간 작업 정지, 바로끝나면 exec접속 못하므로.

     


    ENTRYPOINT

    - 컨테이너가 생성되고 최초로 실행되는 명령어
    - 컨테이너(미니 컴퓨터)가 켜지고 실행시키고 싶은 명령어

    // 문법
    ENTRYPOINT [실행 명령어]
    
    // 예시
    ENTRYPOINT ["/bin/bash", "-c", "echo hello"] // 컨테이너 내 hello 출력





    .dockerignore

    - 이 파일을 추가하면 컨테이너에 포함되지않는다

    - 이미지만들때 무시.







Designed by Tistory.