기초/Docker

Docker란?

Yoiiin 2023. 5. 30. 20:08
SMALL

도커(docker)는 리눅스의 응용프로그램들을 소프트웨어 컨테이너(Container) 안에 배치시키는 일을 자동화하는 오픈소스 프로젝트이다

Container : '패키징'과 '운반'을 편리하게 해준다

 

 

1. 가상머신 vs 컨테이너

공통점 : 애플리케이션을 관련 라이브러리 및 모든 종속항목과 패키지로 묶어 소프트웨어 서비스 구동을 위한 격리환경을 마련

차이점 : 가상화방식의 차이점

기존 가상머신은 OS전체를 image로 가상화하는 방식이지만 컨테이너는 별도의 하드웨어 에뮬레이션 없이 리눅스 커널을 공유하여 컨테이너를 실행하며 OS가 따로 존재하지 않는다. → 프로세스격리

 

 

 

2. 프로세스격리

사용자 공간을 여러 개로 나누어 프로세스에서 사용하는 리소스를 제한하는 방식

리눅스 컨트롤 그룹은 프로세스가 소비할 수 있는 리소스(cpu,메모리 등)를 제한할 수 있는 기능으로 기존 가상화 기술에서는 VM이 실제 물리 하드웨어를 에뮬레이트 하므로 OS가 반드시 필요했다.

 

즉, 컨테이너는 리눅스가 제공하는 기능을 이용하여 단절된 공간에서 할당받은 시스템 자원을 통해 독립적으로 가동되는 일종의 '프로세스’이다.

  • 시스템 컨테이너(system container) - 컨테이너 기술들을 사용해 운영체제 위에 하드웨어 가상화 없이 운영체제를 실행
  • 애플리케이션 컨테이너(application container) - 컨테이너 기술을 활용해 하나의 애플리케이션(프로세스)을 실행하는 것을 목표로 단 하나의 프로세스만 실행한다는점이 장점

 

 

 

3. Layer 저장방식

유니온 파일 시스템(Union File System)을 이용하여 여러개의 Layer를 하나의 파일시스템으로 만드는 방식을 의미한다.

 

 

 

4. Docker Image

컨테이너 실행에 필요한 모든 파일과 설정 값 등을 포함

docker말고도 redis 이미지는 redis 실행에 필요한 모든 파일을 가지고 있고, Gitlab 이미지는 centos를 기반으로 DB, Ruby, 포트정보등 필요한 모든 정보를 가지고 있다.

 

1️⃣ 이미지 경로

<NAMESPACE>/<IMAGE_NAME>:<TAG>

도커 클라이언트의 기본저장소는 docker.io이기때문에, tag를 간단하게 작성하여도 image다운이 가능하다

 

2️⃣ 이미지 생성방식

자체 DSL(Domain-Specific-Language)인 Docker File을 이용해 이미지 생산한다.

이 파일은 소스와 함께 버전이 관리되고 누구나 이미지 생산 과정을 볼 수 있어 수정 및 배포가 용이하다. → 문제점!

 

3️⃣ 도커 허브

도커 허브를 통해 공개 이미지를 관리해준다. 이때 도커 허브에서는 전 세계의 사람들과 이미지를 쉽게 공유할 수 있으며 Ubuntu, centos 등의 기본 이미지와 java, python 등의 공식이미지, 일반 사용자들이 만든 이미지도 이미 50만개가 넘게 저장되어있다.

LIST