새소식

ML Development/Docker | k8s - 2023.05.16

[Docker] Docker 설치 방법 및 기본 명령어 알아보기

  • -

설치 방법


  • 설치
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 실행 마다 중간 이미지 추가로 용량 증가 → &&를 사용해 명령어 한꺼번에 처리
  • 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"]

참고

 

Engineering Blog by Dale Seo

Engineering Blog by Dale Seo

www.daleseo.com

  • 추가적인 명령어를 확인할 수 있다.
 

Docker - image 크기 줄이기

1\. 가벼운 Base image를 사용이미지에는 불필요한 것들이 많이 포함되어 있을수 있기때문에 debian계열로는 slim, jessie, alpine등을 사용하여 용량을 줄일 수 있음단, 필요한 패키지, 파일이 잇을수 있

velog.io

  • Dockerfile을 어떤 식으로 작성해야 하는 지 알 수 있다.
 

[Docker] RUN vs CMD vs ENTRYPOINT in Dockerfile

헷갈리기 쉬운 Docker Dockerfile 명령어, RUN, CMD, ENTRYPOINT. 모두 뭔가 실행하는 명령어이다.

blog.leocat.kr

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.