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가지
- 전체 출력: docker logs logs-test
- 실시간 출력: docker logs -f logs-test
- 마지막 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로 장고 프로젝트를 핸들링한다.
- 순서
- 가상환경 생성
- 프로젝트 생성 및 이동
- django-admin startproject (프로젝트 이름)
- cd (트로젝트 이름)
- 파일 활성화
- 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 등의 형식일 수 있으며, 클라이언트가 요청한 작업에 따라 다양한 형태로 전송합니다.