TIL

내일배움캠프 53일차 TIL + Docker, Python-dictionary, Django

onesword 2024. 12. 9. 21:19

목차

  • Docker 3~5강
  • Python-dictionary
  • django(2~6)

Docker 3~5강

모니터링과 로깅

  • 모니터링이란?
    • 컨테이너가 어떻게 돌아가고있는지 확인(성능, 자원, 네트원크 사용량 등)
  • Container 로깅
    • 앱의 실행 과정을 로그로 기록하고 로깅으로 확인
    • docker는 모드 로그의 출력 및 에러를 json-file 로기 드라이버에 기록한다.
    • 로그 파일이 계속 커짐으로 사용량을 정해 주어야한다.(최대크기, 파일 개수)
    • 저장 장소(Ubuntu기준: /var/lib/docker/containers/[컨테이너ID]/[컨테이너ID]-json.log)
    • 명려어 3가지
      1. 전체 출력: docker logs logs-test
      2. 실시간 출력: docker logs -f logs-test
      3. 마지막 10줄 출력: docker logs --tail 10 logs-test

Docker Volume

  • 특징
    • 컨테이너만 사용하는 것과 달리 종료 후 데이터가 남음
    • 여러 컨테이너가 같은 데이터 사용 가능
    • 백업 및 옭기긱 쉬움
    • 코드를 바꿔도 데이터는 유지
  • bind mount
    • 특정 폴더나 파일을 컨테이너 안에 직접 쓸 수 있게 해준다.
    • 폴더나 파일을 골라서 Docker 컨테이너에 붙여넣는 것과 비슷
    • 절대 경로
  • tmpfs mount
    • 컴퓨터 메모리를 사용
    • 일시적 데이터 저장 (영구x)
    • 컨테이너끼리 공유 X

Docker Network/컨테이너 네트워크 모델(CNM)

  • 도커 네트워크는 도커 컨테이너끼리 서로 통신할 수 있게 도와준다.
  • 하나의 샌드박스 안에는 여러개의 엔드포인트가 있을 수 있다.
  • 여러개의 네트워크가 연결 될 수 있다.
  • 요소
    • 샌드 박스: 컨테이너를 외부 세계로부터 완전히 분리하는 역할
    • 엔드 포인트: 외부세계와 샌드박스의 연결점
    • 네트워크: 엔드 포인트에서 다른 엔드 포인트로 즉, 컨테이너에서 다른 컨테이너로 데이터를 보내는 길
  • 종류
    • 브리지 네트워크: 기본 네트워크로 한 컴퓨터 안에서 여러 컨테이너가 서로 통신 (포트 맵핑을 사용하면 외부에서도 컨테이너로 접근 가능)
    • 공용 네트워크: 호스트 네트워크를 사용해 컨테이너가 직접 우리 컴퓨터의 네트워크를 쓰게 하는 방법
    • 사설 네트워크: 컨테이너끼리만 통신할 수 있는 네트워크(외부와 격리)

Python-dictionary

딕셔너리

  • 키, 값 쌍
  • 변경 가능(추가, 삭제, 변경)
  • 키 값 중복 불가
  • 키 값 변경 불가
  • 다양한 자료형 가능

생성

  • 중괄호로 생성 empty = {}
  • dict 함수로 생성
  • fromkeys() 메서드 사용

접근 및 변경

  • 키 값을 사용해 접근 print(person['name']) # Alice
  • get 메서드 print(person.get('name')) # Alice
  • 직접 지정해 변경 person['age'] = 26
  • 요소 추가 person['country'] = 'USA'
  • 삭제 pop , del , clear, del

딕셔너리 메서드

  • keys(), values(), items()
  • 키 값 쌍 요소 추가 update()
  • 제일 뒤 요소 삭제 popitem()
  • 추가나 기존값 불러오기 setdefault()

이후 반복문, 컴프리헨션, 중첩 딕셔너리, 메모리를 배웠습니다.


django(2~6)

장고 프로젝트 생성

  • manage.py로 장고 프로젝트를 핸들링한다.
  • 순서
    1. 가상환경 생성
    2. 프로젝트 생성 및 이동
      • django-admin startproject (프로젝트 이름)
      • cd (트로젝트 이름)
    3. 파일 활성화
      • python manage.py runserver
  • 프로젝트 생성 시 생성 되는 파일/폴더
    • settings.py : 프로젝트의 설정을 관리하는 곳
    • urls.py : 어떤 요청을 처리할지 결정하는 곳

앱과 프로젝트

  • 앱이란?
    • 하나의 프로젝트는 여러 개의 앱으로 구성 됳 수 있다.
      • 하나의 앱으로 모두 개발하는 것도 가능.
  • 비교
    • 프로젝트: 앱의 집합체
    • 앱: 각각의 기능 단위 모듈
  • 앱 생성
    • python manage.py startapp <app_name>
  • 앱 등록
    • setting.py의 INSTALLED_APPS 부분에 앱의 이름을 적어준다.

클라이언드와 서버

  • 클라이언트
    • 인터넷에 연결된 장치 특히, 웹 브라우저(사용자)
  • 서버
    • 자원(Resource)을 가지고 있는 컴퓨터(요청 처리 / 응답하는 주체)

요청과 응답

  • 요청
    • 클라이언트(웹 브라우저, 모바일 앱 등)가 서버에게 특정한 작업을 요청합니다.
    • 클라이언트의 정보, 요청의 형식, 인증 정보 등을 포함합니다.
    • 데이터를 포함하며, JSON이나 HTML 폼 데이터와 같은 형식으로 전달합니다.
    • 클라이언트가 요청하는 것이 무엇인지 URL을 보면 파악할 수 있습니다.
  • 응답
    • 서버가 클라이언트의 요청을 받고 처리한 후에 클라이언트에게 결과를 전송합니다.
    • 결과에는 여러 가지 부가적인 정보를 포함합니다.
    • HTML, JSON, XML 등의 형식일 수 있으며, 클라이언트가 요청한 작업에 따라 다양한 형태로 전송합니다.