Docker 활용기0) - 도커 설명 및 세팅하기
1. Docker란?
1) 한줄 설명
- 도커(Docker)는 애플리케이션을 컨테이너라는 격리된 환경에서 실행할 수 있게 해주는 플랫폼입니다. 이를 통해 개발자는 다양한 환경에서 일관된 방식으로 애플리케이션을 구축, 배포 및 실행할 수 있습니다.
2) 구성요소
(1) 도커 이미지 (Docker Image)
- 정의 :
- 컨테이너를 생성하기 위한 템플릿입니다.
- 애플리케이션 실행에 필요한 모든 것(코드, 라이브러리, 설정 등)을 포함하는 읽기 전용 파일입니다.
- 가상 머신에서 사용하는 ISO 파일과 유사한 개념입니다.
- 특징 :
- 여러 개의 레이어(layer)로 구성된 바이너리 파일입니다.
- 컨테이너 생성 및 실행 시 읽기 전용으로 사용됩니다.
- Dockerfile이라는 설정 파일을 통해 이미지를 생성합니다.
(2) 도커 컨테이너 (Docker Container)
- 정의 :
- 도커 이미지를 기반으로 생성된 실행 가능한 인스턴스입니다.
- 이미지에 정의된 환경에서 실제 애플리케이션이 실행되는 격리된 공간입니다.
- 가상 머신보다 가볍고 빠르며, 시스템 자원을 효율적으로 사용합니다.
- 특징 :
- 이미지를 실행한 상태이며, 애플리케이션과 필요한 라이브러리, 설정 파일 등을 포함합니다.
- 호스트 OS와 격리되어 독립적인 환경을 제공합니다.
- 컨테이너 내부의 변경 사항은 컨테이너가 삭제되면 사라집니다. (볼륨을 사용하여 영구 저장 가능)
3) 사용법
(1) 이미지 생성 (Dockerfile 작성 및 빌드)
- Dockerfile 작성 :
- 애플리케이션 실행에 필요한 운영체제, 라이브러리, 소스 코드 등을 정의한 설정 파일입니다.
FROM
,RUN
,COPY
,CMD
등의 명령어를 사용하여 이미지 레이어를 구성합니다.
- 이미지 빌드:
docker build
명령어를 사용하여 Dockerfile을 기반으로 이미지를 생성합니다.- 생성된 이미지는 도커 허브 또는 로컬 레지스트리에 저장됩니다.
- 예시 :
- Dockerfile 설명
FROM
: python 3.9버전 공식 이미지 가져오기(From 파이썬 도커 허브)WORKDIR
: 작업 디렉토리 지정COPY
: 로컬의 requirements.txt 파일을 code폴더 내 복사RUN
: 이미지 빌드 과정에서 이뤄지는 패키지 설치, 파일 복사, 환경 설정 등 수행- 이때, pip, git 등
FROM
을 통해 가져오는 base Image에 세팅 되어 있어야 사용 가능
- 이때, pip, git 등
CMD
: 도커 컨테이너 실행 시, 명령어 실행- 예시는 uvicorn 라이브러리를 활용해 80포트로 배포하는 명령어
- 빌드 예제 : docker build -t my_image:ver0.1 .
-t
: “my_image”라는 이미지 이름과 “ver0.1” 이라는 태그를 붙임(태그는 버전 구분)- 마지막 . 은 해당 경로에 존재하는 dockerfile를 빌드하라는 의미
FROM python:3.9 WORKDIR /code COPY ./requirements.txt /code/requirements.txt RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt RUN git clone https://github.com/NeatyNut/ipsi_rag.git CMD ["uvicorn", "ipsi_rag.main:app", "--host", "0.0.0.0", "--port", "8000"]
- Dockerfile 설명
(2) 컨테이너 실행 (이미지 기반 컨테이너 생성 및 실행)
- 이미지 다운로드:
docker pull
명령어를 사용하여 도커 허브 또는 레지스트리에서 이미지를 다운로드합니다.
- 컨테이너 생성 및 실행:
docker run
명령어를 사용하여 이미지를 기반으로 컨테이너를 생성하고 실행합니다.-p
옵션으로 호스트와 컨테이너의 포트를 연결하고,-v
옵션으로 볼륨을 마운트할 수 있습니다.- docker compose로
- 컨테이너 관리:
docker ps
명령어로 실행 중인 컨테이너 목록을 확인하고,docker stop
명령어로 컨테이너를 중지합니다.docker rm
명령어로 컨테이너를 삭제하고,docker exec
명령어로 실행 중인 컨테이너에 접속하여 명령어를 실행할 수 있습니다.
(3) 주요 명령어
- docker build: 이미지를 빌드합니다.
- docker pull: 이미지를 다운로드합니다.
- docker run: 컨테이너를 생성하고 실행합니다.
- docker ps: 실행 중인 컨테이너 목록을 표시합니다.
- docker stop: 컨테이너를 중지합니다.
- docker rm: 컨테이너를 삭제합니다.
- docker images: 이미지 목록을 표시합니다.
- docker rimi: 이미지를 삭제합니다.
4) 도커 세팅하기 - 윈도우 기준
(1) 필수 환경 설정
- Hyper-V / WSL2(Windows Subsystem Linux) 세팅
- Why : Hyper-V는 가상화 환경을 제공하고, WSL2는 리눅스 커널 통합 및 성능 향상을 담당하여, 이 두 가지 기술은 도커 데스크톱이 윈도우에서 리눅스 컨테이너를 효율적으로 실행하기 위한 필수적인 요소
- 설정법 :
- 윈도우 화면 하단의 Windows 기능 켜기/끄기
- Linux용 Windows 하위 시스템 체크
- 가상 머신 플랫폼 체크
- 윈도우 화면 하단의 Windows 기능 켜기/끄기
(2) 도커 데스크탑 설치
- Docker Desktop for Windows 실행파일을 다운 및 설치
댓글남기기