카테고리 없음

[Docker] 도커 특강

dekoms 2024. 1. 29. 11:16

키워드

Host OS, Guest OS, 쿠버네티스

 

# 가상화

물리적으로 운영하는 비용이 많이 들기 때문에

여러 서버 환경을 하나의 PC에서 사용할 수 있도록 한다.

=> 할당받은 리소스 이상을 사용할 수 없다.

 

 

# 하이퍼바이저 가상화 (VM)

: 하이퍼바이저(하나의 커널)를 통해 Host OS와 Guest OS가 system call을 주고 받아 interaction한다.

장점

1. 머신들과의 완전한 독립

단점

1. 하이퍼바이저 자체가 하나의 커널이기 때문에 무겁다. 배포하기 쉽지 않다.

 

# 컨테이너 가상화

컨테이너: Docker가 아닌 리눅스 컨테이너에서 파생된 개념이다. 배포, 환경을 규격화 시켰다.

장점

1. 컨테이너는 독립적이다.

2. Host OS의 커널을 컨테이너가 공유하여 사용하기에 가볍다.

 

 

# 하드웨어 레벨의 가상화(하이퍼바이저) vs 운영체제 레벨의 가상화(컨테이너)

하이퍼바이저: Guest OS가 커널을 가지고 있기에 여러 개의 프로세스를 동작시킬 수 있다.

컨테이너: Guest OS 하나당 하나의 프로세스를 동작시킨다.

 

# 도커

: 클라이언트-서버 모델이다. 내부적으로 클라이언트와 도커 데몬(서버) 사이에 API를 통해 통신한다.

 

 

# 이미지와 컨테이너

이미지: 프로그램(정적인 리소스)

컨테이너: 프로세스(엔티티)

이미지를 기반으로 프로세스를 만들 수 있다.

컨테이너에 메타데이터를 덮어씌울 수 있다.

 

 

쿠버네티스: 컨테이너를 관리해주는 기술. migration 등

 

 

커밋: 현재 컨테이너 상태를 스냅샷으로 저장.(이미지)

 


 

키워드

IaC

 

IaC: 문법에 맞게 코드를 작성해두면, 프로그램(도커)이 코드를 읽어서 동일한 환경을 세팅해준다.

 

 

# 이미지 빌드

빌드 컨텍스트에 여러 layer, 파일이 복사된다.

이후, COPY를 통해 임시 컨테이너(베이스 이미지)에 필요한 정보만 copy후 커밋됨.

COPY [빌드 컨텍스트] [임시 컨테이너]

 

# docker build

: 이미지를 빌드한다.

 

# docker run

: 컨테이너를 실행한다. 이때, 오류가 나더라도 컨테이너가 생성되기 때문에 rm 해줘야 한다.

[-d]: 백그라운드 실행. 로그를 보지 않고 추가로 명령어 입력이 가능하다.

[-p]: 포트 지정.


 

키워드: NAT, 포트 포워딩, docker compose, 쿠버네티스

 

# 도커 내부 사설망(IP, 포트)

도커에는 NAT가 자동으로 적용되어 있다. 하지만 포트 포워딩은 직접 해줘야 함.

-p 8080:3000 => 8080포트를 3000포트(도커 내의 포트)로 바꿔라.

 

# docker network

사설망을 추가로 생성할 수 있다. 초기에는 bridge 네트워크를 default로 사용한다.

 

# Docker compose

.yml: 야믈 파일