설치 방법
- 설치
curl -sSL get.docker.com | sh
- 권한 부여
sudo usermod -aG docker $USER
sudo service docker restart
Docker 관련 명령어
docker run
- Image(이미지)를 통해 Container(컨테이너) 생성
docker run
명령어 기본 형식
docker run (<옵션>) <이미지 식별자> (<명령어>) (<인자>)
옵션
-it
: 터미널을 활용해 컨테이너 접근 →/bin/sh
실행 시 활용 가능
docker run -it <이미지 식별자> /bin/sh
-p
: Port Forwarding 옵션로컬 포트
:컨테이너 포트
의 형식
# 컨테이너의 8080 포트를 로컬의 80 포트를 사용해서 접근
docker run -p 80:8080 <이미지 식별자>
-d
: 컨테이너를 백그라운드에서 실행 → CMD 창 닫는다고 꺼지지 않도록 설정
docker run -d <이미지 식별자>
Container(컨테이너) 및 Image(이미지) 관리
- 생성한 컨테이너 및 이미지 확인하기
docker container ls
docker images
- 실행 중인 모든 컨테이너 종료
docker stop $(docker ps -a -q)
- 컨테이너 및 이미지 삭제하기 → 컨테이너 삭제해야 이미지 삭제 가능
docker container rm -f $(docker container ls -aq)
docker rmi $(docker images -q)
Dockerfile 작성 관련
FROM
: 사용할 Docker Image 설정AS builder
: 2-Stage build를 위한 옵션
WORKDIR
: 컨테이너 내 작업 경로 설정COPY
: 호스트 환경의 파일 복사RUN
: 이미지에 다른 패키지 설치할 때 활용- RUN 실행 마다 중간 이미지 추가로 용량 증가 →
&&
를 사용해 명령어 한꺼번에 처리
- RUN 실행 마다 중간 이미지 추가로 용량 증가 →
ADD
: COPY의 기능을 포함 + URL 및 압축 해제 후 파일 전송이 가능 → 다만 느림EXPOSE
: 서비스 포트 설정CMD
: 컨테이너 실행 시 수행할 작업 입력
# backend/Dockerfile
FROM python:3.9.16-slim AS builder
WORKDIR /app
COPY pyproject.toml poetry.lock /app/
# python dependencies 관리
RUN pip install poetry==1.4.0 \
&& poetry config virtualenvs.in-project true \
&& poetry install --no-ansi --no-root \
&& poetry export -f requirements.txt >> requirements.txt
# ---
FROM python:3.9.16-slim
WORKDIR /app
COPY --from=builder /app/requirements.txt /app
COPY . /app
RUN pip install --no-cache-dir -r /app/requirements.txt
EXPOSE 8080
CMD ["python3", "main.py"]
참고
- 추가적인 명령어를 확인할 수 있다.
- Dockerfile을 어떤 식으로 작성해야 하는 지 알 수 있다.