도커(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만개가 넘게 저장되어있다.
'기초 > Docker' 카테고리의 다른 글
Docker 구현해보기 (0) | 2023.05.30 |
---|---|
Docker 명령어 (0) | 2023.05.30 |