Cloud/Docker

Dockerfile 작성하는 방법과 Docker 명령어 사용하기

jheaon 2024. 7. 25. 10:25

 


Dockerfile 작성법

Dockerfile은 도커 이미지를 생성하기 위한 스크립트 파일을 의미한다. 해당 스크립트 파일을 빌드하면, 도커파일에 나열된 명령문을 차례대로 수행하며 도커 이미지를 만든다. 그리고 만들어진 이미지를 통해 컨테이너를 구축할 수 있다. 

 

🐳 Dockerfile

# python 3.12버전의 이미지를 가져온다. 
FROM python:3.12

# 현재 내가 위치한 경로에 있는 모든 파일을 도커 컨테이너 안의 project 폴더 안으로 복사한다. 
COPY . project/

# 해당 URL에서 파일을 다운받는다.
ADD https://example.com/file.tar.gz project/

# 도커 컨테이너 안의 project 폴더로 이동한다. 
WORKDIR project/

# 환경 변수를 설정한다. 
ENV debug=True
ENV database=sqlite3

# 해당 명령어를 실행한다. 
RUN python -m install --upgrade pip

# 도커 컨테이너의 8000번 포트를 연다.
EXPOSE 8000

# 컨테이너가 시작 될 때 해당 명령어를 수행한다. 
CMD ["python", "manage.py", "runserver"]

 

  • FROM: 기본 이미지를 지정한다. 모든 도커 파일에는 반드시 하나 이상의 FROM 명령어를 포함하여야 한다.
  • ADD: 파일 및 디렉터리를 복사합니다. URL에서 파일을 다운로드할 수도 있으며 COPY와 달리 압축 파일을 자동으로 압축 해제할 수 있다.
  • COPY: 파일 및 디렉터리를 복사한다. ADD와 달리 URL에서 파일을 다운로드하지 않으며, 압축 파일을 압축 해제하지 않는다.
  • ENV: 환경 변수를 설정한다. 
  • EXPOSE: 컨테이너가 수신할 포트를 지정한다. 실제 포트 개방은 docker run 명령어에서 -p 옵션을 사용하여 수행된다.
  • VOLUME: 컨테이너 외부에 저장할 디렉터리를 지정한다. 
  • RUN: 이미지를 빌드하는 동안 실행하는 명령어를 지정한다. 각 명령어는 새로운 이미지 레이어를 만든다. 
  • CMD: 컨테이너가 시작될 때 실행할 명령어를 지정한다. CMD는 한 번만 사용할 수 있으며 여러 번 사용되면, 마지막 CMD가 적용된다. 

 

 

 

Docker 명령어

이미지 관련 명령어

  • docker --version: 도커 버전을 확인한다. 
  • docker images: 현재 로컬에 저장된 도커 이미지 목록을 확인한다. 
  • docker pull <이미지 이름>: 도커 허브에서 이미지를 다운로드한다. 
  • docker rmi : 해당 이미지를 제거한다.
  • docker build -t <이미지이름> <Dockerfile 경로>: 도커 파일을 사용하여 이미지를 빌드한다. 

 

컨테이너 관련 명령어

  • docker run : 새로운 컨테이너를 생성하고 실행한다. 
    - it 옵션 : input, output의 의미로 터미널과 소통할 수 있게 만든다.
    -d 옵션 : detached 모드로 백그라운드에서 컨테이너를 실행한다. 기본값은 attached 모드이다. 
    --rm 옵션 : 컨테이너가 중지할 때 컨테이너가 제거된다.
    --name 옵션 <원하는 이름, 이미지 이름> : 원하는 이름으로 컨테이너가 실행된다
  • docker ps : 현재 사용하는 컨테이너의 목록을 보여준다.
    -a 옵션 : 모든 컨테이너의 목록을 보여줌
  • docker stop <컨테이너 이름 또는 ID>: 실행 중인 컨테이너를 중지한다. 
  • docker start <컨테이너 이름 또는 ID>: 중지된 컨테이너를 시작한다.
  • docker rm <컨테이너 이름 또는 ID>: 중지된 컨테이너를 삭제한다. 
  • docker logs <컨테이너 이름 또는 ID>: 해당 컨테이너의 과거 출력값들을 확인한다. 
    - f 옵션 : 과거로그와 앞으로의 출력도 계속 확인할 때 사용한다. 
  • docker exec -it <컨테이너 이름 또는 ID> bash: 실행 중인 컨테이너에 접속하여 명령어를 실행한다. 

'Cloud/Docker'의 다른글

  • 현재글 Dockerfile 작성하는 방법과 Docker 명령어 사용하기

관련글