[TIL] 내일배움캠프 64일차_[Docker] Docker 사용해보기
👀Today I Learn
가상화 머신 vs Docker
가상화 머신
- 내 컴퓨터에 환경을 설치
- ex. VMware, VirtualBox
- 무겁고 느림, 오류 많음
Docker
- 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 경로]
- 빌드 과정
- Dockerfile 읽기 : 작성된 Dockerfile을 기반으로 명령어를 실행
- 베이스 이미지 다운로드 : 정의된 FROM 이미지가 로컬에 없으면 도커 허브에서 다운로드
- 명령어 실행 : Dockerfile의 각 명령어를 순차적으로 실행
- 레이어 캐싱 : 이전에 실행된 단계가 변경되지 않았따면 해당 단계를 캐시에서 가져옴
- 이미지 생성 : 최종적으로 완성된 도커 이미지를 생성
Container 실행
- docker images → 도커 이미지 확인
docker run [옵션] [이미지 이름]:[태그]
실습
-
작업 폴더 생성 및 가상환경설치
python -m venv docker_env
-
장고 설치하기(개발이 됐다고 가정)
pip install django
-
프로젝트 만들기
django-admin startproject myapp
-
의존성 파일
pip freeze > requirements.txt
-
- 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 .
- 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/*
-
-
이미지 잘생성되었는지 확인하기
docker images
💡Today I Thought
오늘의 체크리스트
- 알고리즘 코드카타 281-285
- SQL 코드카타 95-96
- LLM 필수과제
- Docker 특강 1 내용 정리 및 복습
- TIL 작성
회고
오늘도 야무지게 마무리~ 오전부터 일찍 일어나서 한 보람이 있다! 요즘 코드카타가 어려워서 시간이 너무 많이 쓰여서 하루에 두세개로 줄여야할까싶다😫.. 점점 어려워지는 코드카타 이대로 괜찮은가. SQL은 어려웠다 쉬웠다 해서 갈피를 못잡겠다. 그래서 일단 1문제로 정해두고 너무 쉬우면 한문제 더 푸는 형식으로 진행중! 내일은 LLM 도전과제까지 끝내야지!
댓글남기기