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: 실행 중인 컨테이너에 접속하여 명령어를 실행한다.