본문 바로가기

개발공부/원티드 챌린지 정리

8월 백엔드 챌린지 : 도커 프로 (1)

728x90

1. Docker란?

- 오픈 플랫폼

- 어플리케이션을 인프라에서 분리해준다

- 신속하다

- 인프라를 어플리케이션을 관리하는 것처럼 관리할 수 있다

- 코드 배포에 용이하다

 

- 컨테이너 기반 가상화 도구

- 어플리케이션을 컨테이너라는 단위로 격리해 실행하고 배포하는 기술

 

2. 컨테이너란?

- 컨테이너는 가상화 기술 중 하나

- 호스트 운영체제 위 여러 개의 격리된 환경을 생성

- 각각의 컨테이너 안에서 어플리케이션 실행

 

3. 가상화 기술이란?

- 하나의 물리적인 컴퓨터 자원(CPU, 메모리, 저장장치) 등을 가상적으로 분할해 여러 개의 가상 컴퓨터 환경을 만들어 내는 기술. 이를 통해 물리적인 컴퓨터 자원을 더육 효율적으로 사용할 수 있으며, 서버나 어플리케이션을 운영할 때 유연성과 안정성을 제공한다

하이퍼바이저란, 가상 머신을 생성하고 구동하는 소프트웨어

- OS에 자원을 할당 및 조율

- OS들의 요청을 번역해 하드웨어에 전달

1) 하이퍼바이저

장점

- 각 VM은 완전히 독립된 OS를 가지고 VM 간 물리적 자원을 가상화하여 공유

단점

- 가상화 오버헤드가 발생할 수 있다. VM을 시작하고 관리하는 데 리소스가 소요된다

2) 컨테이너 엔진

컨테이너라는 가상화 단위를 사용해 어플리케이션을 패키징하고 실행하는 소프트웨어

- 호스트 운영체제의 커널을 공유하며, 각 컨테이너는 어플리케이션 및 종속성을 격리된 환경에 패키징한다

- 가볍고 공유 리소스를 활용해 높은 효율성을 가진다

- 일반적으로 하이퍼바이저에 비해 더 가볍고 빠르게 배포 및 확장할 수 있다

- 컨테이너화된 환경은 가상화된 환경보다 가볍고 이식성이 뛰어나다

1) 컨테이너 생성 및 관리

2) 이미지 관리 : 이미지는 컨테이너 실행에 필요한 모든 정보와 파일 시스템을 포함하며, 이미지를 기반으로 여러 컨테이너 인스턴스를 생성할 수 있다

3) 네트워킹 : 컨테이너 간 통신 및 호스트 시스템과의 네트워크 연결을 관리한다. 컨테이너는 가상 네트워크 인터페이스를 통해 통신하며, 네트워크 포트를 매핑해 외부와 통신할 수 있다

4) 스토리지 관리 : 컨테이너의 파일 시스템을 관리하고 데이터를 영속적으로 저장하는 기능을 제공한다. 이를 통해 데이터의 지속성과 백업이 가능하며, 데이터 볼륨을 공유하는 데 사용된다

5) 스케줄링 및 오케스트레이션 : 몇몇 컨테이너 엔진은 여러 컨테이너 인스턴스를 자동으로 관리하고 배포하는 기능을 제공해 대규모 어플리케이션의 관리 및 확장이 용이해진다

 

- 가장 대중적인 컨테이너 엔진 : 도커

그외 : 쿠버네티스, 컨테이너드, 포드맨 등

 

* 비교

- 접근 방식과 사용 사례에서 차이가 있다

- 일반적으로 하이퍼바이저는 가상 머신 단위로 사용되며, VM은 완전히 독립된 운영 체제를 실행한다. 주로 서버 가상화 및 데이터 센터 환경에서 사용된다

- 컨테이너 엔진은 어플리케이션 단위로 사용되며, 컨테이너는 공유 커널을 활용해 실행된다. 주로 개발, 테스트, 배포, 스케일링 등의 프로세스를 간편하게 관리하기 위해 사용된다

 

~ 각 특장점으로 인해 선택해서 사용하거나 두 방식을 혼합해서 사용할 수도 있다 : 하이퍼바이저 위에서 여러 컨테이너를 실행하는 방식 등

3) 도커 엔진

1. 도커 데몬

도커 엔진의 핵심 구성 요소로, 컨테이너 생성 및 관리 작업을 처리하는 백그라운드 서비스이다. 데몬은 컨테이너의 라이프사이클 관리, 이미지 관리, 네트워킹, 스토리지 관리 등 다양한 작업을 수행한다

2. 도커 클라이언트

사용자가 도커 데몬과 상호작용하기 위해 커맨드 라인 도구 또는 API를 통한 클라이언트 인터페이스를 제공한다. 사용자는 도커 클라이언트를 사용해 컨테이너 및 이미지를 관리하고 컨테이너를 실행, 중지, 로그 확인 등의 작업을 수행할 수 있다

 

도커의 컨테이너 엔진 기반 특징

1) 리눅스 커널의 기능을 사용해 만들어짐

- chroot : 파일 시스템을 격리

- namespace : 프로세스 격리

- cgroup : 하드웨어 지원 격리

2) 프로세스 단위의 격리 환경

 

도커 오브젝트

1) 도커 이미지

- 도커 컨테이너를 만들기 위한 읽기 전용 템플릿

2) 도커 컨테이너

- 한 도커 이미지의 실행 가능한 인스턴스

- 어플리케이션을 실행하기 위한 모든 파일과 설정 정보를 포함하는 패키지

3) 도커 레지스트리

- 도커 이미지를 관리하고 저장하는 곳 ~ 도커 허브

 

728x90