Docker
- 개발한 어플리케이션을 쉽게 배포할 수 있게 도와주는 것
- 언제 어디서나 똑같은 개발 환경을 만들어줌
컨테이너
- 컴퓨터 환경에서 의존하지 않고 소프트웨어를 패키징하는 표준 단위
기반 기술
- Namespaces: 프로세스를 실행할 때 시스템의 리소스를 분리해서 실행 (같은 네임스페이스에 있는 프로세스들만 자원을 공유할 수 있음)
- Cgroups: 시스템 자원의 할당을 컨트롤할 수 있게 해 줌 (자원을 얼마나 쓸 수 있을지 통제)
- Chroot: 루트 디렉토리를 변경하는 리눅스 명령
시작하기
- DockerHub에서 원하는 이미지를 가져와서 실행
- Foreground / Background
- Docker Command 명령으로 사용
- 스크립트 사용
Dockerfile
- 텍스트 베이스 스크립트
- 적혀있는 내용 가지고 컨테이너를 생성해라.
Docker Compose
- 여러 컨테이너를 관리하는 도구
- yaml 로 관리
Container Orchestration
- Docker Swarm
- 쿠버네틱스가 대체해버림!! 구글이 만듦.
- 도커를 2억개 관리하기 위해서 나타남
VM vs Container
VC는 엄청 무거운데 Container 는 엄청 가벼움. 엄청 얇은 레이어.
시스템콜
프로세스
- fork라는 시스템 콜을 호출하면 프로세스가 만들어진다.
Database
Data
Database
RDBMS
- Relational Database Management System
- 관계형 데이터 베이스
- 관계형 모델이라는 수학적 모델을 통해 저장하는 것
- tuples(레코드), domain
- 물리적 데이터 저장소와 논리적인 데이터 설계의 분리
- 프로그램 중심 설계에서 데이터 중심의 설계로 전환
- 강력한 트랜잭션 지원
SQL