TIL

👀Today I Learn

가상화 머신 vs Docker

가상화 머신

  • 내 컴퓨터에 환경을 설치
    • ex. VMware, VirtualBox
  • 무겁고 느림, 오류 많음

Docker

Image

  • os는 내것을 공유함(커널만 공유)
    • 커널? 하드웨어와 소프트웨어를 연결해주는 다리 역할
  • 다른 os에서도 사용할 수 있도록 만들어주는 도구
  • 간단하게 여러 플렛폼에 공유 가능
  • 단점 : 도커를 공부해야함
  • Docker file 작성(코드 : 명령이 들어있는 설계도) → image 빌드 → container 실행
    • image 빌드 : 파이썬 클래스
    • container 실행 : 파이썬 객체의 느낌


Docker file

  • Docker file은 위에서 아래로 실행

      # 1. 베이스 이미지 선택
      FROM python:3.10-slim # Layer 1
        
      # 2. 작업 디렉토리 설정
      # cd라고 생각 하면 됨
      WORKDIR /app # Layer 2
        
      # 3. 의존성 파일 복사 및 설치
      COPY requirements.txt /app/ # Layer 3
      RUN pip install --no-cache-dir -r requirements.txt # Layer 4
        	
      # 4. 애플리케이션 파일 복사
      COPY ./app # Layer 5
        
      # 5. 애플리케이션 실행 명령어
      CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"] # Layer 6
    
    • 한줄씩을 Layer라고 하며 1부터 하나씩 올라감(Layer 0 : base image)

이미지 빌드

docker build -t [이미지이름]:[태그] [Docker file 경로]
  • 빌드 과정
    1. Dockerfile 읽기 : 작성된 Dockerfile을 기반으로 명령어를 실행
    2. 베이스 이미지 다운로드 : 정의된 FROM 이미지가 로컬에 없으면 도커 허브에서 다운로드
    3. 명령어 실행 : Dockerfile의 각 명령어를 순차적으로 실행
    4. 레이어 캐싱 : 이전에 실행된 단계가 변경되지 않았따면 해당 단계를 캐시에서 가져옴
    5. 이미지 생성 : 최종적으로 완성된 도커 이미지를 생성

Container 실행

  • docker images → 도커 이미지 확인
docker run [옵션] [이미지 이름]:[태그]

실습

  1. 작업 폴더 생성 및 가상환경설치

     python -m venv docker_env
    
  2. 장고 설치하기(개발이 됐다고 가정)

     pip install django
    
    • 프로젝트 만들기

        django-admin startproject myapp
      
    • 의존성 파일

        pip freeze > requirements.txt
      
  3. Docker
    • 장고와 같은 루트 안에 Dockerfile 만들기

        # 베이스 이미지 선택
        FROM python:3.9-slim
              
        # 작업 디렉토리 설정
        WORKDIR /myapp
              
        # 파일 복사 및 설치
        COPY requirements.txt /myapp/
        RUN pip install --no-cache-dir -r requirements.txt
              
        # 애플리케이션 파일 복사
        COPY . /myapp
              
        # 애플리케이션 실행 명령어
        CMD [ "python", 'manage.py', 'runserver', '0.0.0.8000' ]
      
    • 실행해보자

        docker build -t my-django-app .
      

      Image

      • Docker Desktop이 안열려서 생기는 오류! 실행하면 잘 되어용
    • 참고 : 리눅스에서 사용되는 것들을 업데이트하면서 정리해주기

        RUN apt-get update && apt-get install -y --no-install-recommends \
            gcc \ 
            build-essential \ 
            libffi-dev \ 
            libssl-dev \ 
            zlib1g-dev \ 
            python3-dev \ 
            && rm -rf /var/lib/apt/lists/*
      
  4. 이미지 잘생성되었는지 확인하기

     docker images
    

    Image

    Image



💡Today I Thought

오늘의 체크리스트

  • 알고리즘 코드카타 281-285
  • SQL 코드카타 95-96
  • LLM 필수과제
  • Docker 특강 1 내용 정리 및 복습
  • TIL 작성

회고

  오늘도 야무지게 마무리~ 오전부터 일찍 일어나서 한 보람이 있다! 요즘 코드카타가 어려워서 시간이 너무 많이 쓰여서 하루에 두세개로 줄여야할까싶다😫.. 점점 어려워지는 코드카타 이대로 괜찮은가. SQL은 어려웠다 쉬웠다 해서 갈피를 못잡겠다. 그래서 일단 1문제로 정해두고 너무 쉬우면 한문제 더 푸는 형식으로 진행중! 내일은 LLM 도전과제까지 끝내야지!

댓글남기기